home *** CD-ROM | disk | FTP | other *** search
MacBinary | 1990-03-15 | 26.1 KB | [TEXT/MPS ] |
open in:
MacOS 8.1
|
Win98
|
DOS
browse contents |
view JSON data
|
view as text
This file was processed as: MacBinary
(archive/macBinary).
Confidence | Program | Detection | Match Type | Support
|
---|
66%
| dexvert
| Compact Compressed (Unix) (archive/compact)
| ext
| Supported |
10%
| dexvert
| MacBinary (archive/macBinary)
| fallback
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| MacBinary II, Thu Mar 15 12:47:37 1990, modified Thu Mar 15 12:47:37 1990, creator 'MPS ', type ASCII, 26122 bytes "genrecog.c" , at 0x668a 382 bytes resource
| default (weak)
| |
99%
| file
| data
| default
| |
74%
| TrID
| Macintosh plain text (MacBinary)
| default
| |
25%
| TrID
| MacBinary 2
| default (weak)
| |
100%
| siegfried
| fmt/1762 MacBinary (II)
| default
| |
100%
| lsar
| MacBinary
| default
|
|
id metadata |
---|
key | value |
---|
macFileType | [TEXT] |
macFileCreator | [MPS ] |
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 0a 67 65 6e 72 65 63 | 6f 67 2e 63 00 00 00 00 |..genrec|og.c....|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 4d 50 53 | 20 00 00 00 00 00 00 00 |.TEXTMPS| .......|
|00000050| 00 00 00 00 00 66 0a 00 | 00 01 7e a2 25 85 b9 a2 |.....f..|..~.%...|
|00000060| 25 85 b9 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |%.......|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 d4 13 00 00 |........|........|
|00000080| 2f 2a 20 47 65 6e 65 72 | 61 74 65 20 63 6f 64 65 |/* Gener|ate code|
|00000090| 20 66 72 6f 6d 20 6d 61 | 63 68 69 6e 65 20 64 65 | from ma|chine de|
|000000a0| 73 63 72 69 70 74 69 6f | 6e 20 74 6f 20 65 6d 69 |scriptio|n to emi|
|000000b0| 74 20 69 6e 73 6e 73 20 | 61 73 20 72 74 6c 2e 0d |t insns |as rtl..|
|000000c0| 20 20 20 43 6f 70 79 72 | 69 67 68 74 20 28 43 29 | Copyr|ight (C)|
|000000d0| 20 31 39 38 37 2c 31 39 | 38 38 20 46 72 65 65 20 | 1987,19|88 Free |
|000000e0| 53 6f 66 74 77 61 72 65 | 20 46 6f 75 6e 64 61 74 |Software| Foundat|
|000000f0| 69 6f 6e 2c 20 49 6e 63 | 2e 0d 0d 54 68 69 73 20 |ion, Inc|...This |
|00000100| 66 69 6c 65 20 69 73 20 | 70 61 72 74 20 6f 66 20 |file is |part of |
|00000110| 47 4e 55 20 43 43 2e 0d | 0d 47 4e 55 20 43 43 20 |GNU CC..|.GNU CC |
|00000120| 69 73 20 66 72 65 65 20 | 73 6f 66 74 77 61 72 65 |is free |software|
|00000130| 3b 20 79 6f 75 20 63 61 | 6e 20 72 65 64 69 73 74 |; you ca|n redist|
|00000140| 72 69 62 75 74 65 20 69 | 74 20 61 6e 64 2f 6f 72 |ribute i|t and/or|
|00000150| 20 6d 6f 64 69 66 79 0d | 69 74 20 75 6e 64 65 72 | modify.|it under|
|00000160| 20 74 68 65 20 74 65 72 | 6d 73 20 6f 66 20 74 68 | the ter|ms of th|
|00000170| 65 20 47 4e 55 20 47 65 | 6e 65 72 61 6c 20 50 75 |e GNU Ge|neral Pu|
|00000180| 62 6c 69 63 20 4c 69 63 | 65 6e 73 65 20 61 73 20 |blic Lic|ense as |
|00000190| 70 75 62 6c 69 73 68 65 | 64 20 62 79 0d 74 68 65 |publishe|d by.the|
|000001a0| 20 46 72 65 65 20 53 6f | 66 74 77 61 72 65 20 46 | Free So|ftware F|
|000001b0| 6f 75 6e 64 61 74 69 6f | 6e 3b 20 65 69 74 68 65 |oundatio|n; eithe|
|000001c0| 72 20 76 65 72 73 69 6f | 6e 20 31 2c 20 6f 72 20 |r versio|n 1, or |
|000001d0| 28 61 74 20 79 6f 75 72 | 20 6f 70 74 69 6f 6e 29 |(at your| option)|
|000001e0| 0d 61 6e 79 20 6c 61 74 | 65 72 20 76 65 72 73 69 |.any lat|er versi|
|000001f0| 6f 6e 2e 0d 0d 47 4e 55 | 20 43 43 20 69 73 20 64 |on...GNU| CC is d|
|00000200| 69 73 74 72 69 62 75 74 | 65 64 20 69 6e 20 74 68 |istribut|ed in th|
|00000210| 65 20 68 6f 70 65 20 74 | 68 61 74 20 69 74 20 77 |e hope t|hat it w|
|00000220| 69 6c 6c 20 62 65 20 75 | 73 65 66 75 6c 2c 0d 62 |ill be u|seful,.b|
|00000230| 75 74 20 57 49 54 48 4f | 55 54 20 41 4e 59 20 57 |ut WITHO|UT ANY W|
|00000240| 41 52 52 41 4e 54 59 3b | 20 77 69 74 68 6f 75 74 |ARRANTY;| without|
|00000250| 20 65 76 65 6e 20 74 68 | 65 20 69 6d 70 6c 69 65 | even th|e implie|
|00000260| 64 20 77 61 72 72 61 6e | 74 79 20 6f 66 0d 4d 45 |d warran|ty of.ME|
|00000270| 52 43 48 41 4e 54 41 42 | 49 4c 49 54 59 20 6f 72 |RCHANTAB|ILITY or|
|00000280| 20 46 49 54 4e 45 53 53 | 20 46 4f 52 20 41 20 50 | FITNESS| FOR A P|
|00000290| 41 52 54 49 43 55 4c 41 | 52 20 50 55 52 50 4f 53 |ARTICULA|R PURPOS|
|000002a0| 45 2e 20 20 53 65 65 20 | 74 68 65 0d 47 4e 55 20 |E. See |the.GNU |
|000002b0| 47 65 6e 65 72 61 6c 20 | 50 75 62 6c 69 63 20 4c |General |Public L|
|000002c0| 69 63 65 6e 73 65 20 66 | 6f 72 20 6d 6f 72 65 20 |icense f|or more |
|000002d0| 64 65 74 61 69 6c 73 2e | 0d 0d 59 6f 75 20 73 68 |details.|..You sh|
|000002e0| 6f 75 6c 64 20 68 61 76 | 65 20 72 65 63 65 69 76 |ould hav|e receiv|
|000002f0| 65 64 20 61 20 63 6f 70 | 79 20 6f 66 20 74 68 65 |ed a cop|y of the|
|00000300| 20 47 4e 55 20 47 65 6e | 65 72 61 6c 20 50 75 62 | GNU Gen|eral Pub|
|00000310| 6c 69 63 20 4c 69 63 65 | 6e 73 65 0d 61 6c 6f 6e |lic Lice|nse.alon|
|00000320| 67 20 77 69 74 68 20 47 | 4e 55 20 43 43 3b 20 73 |g with G|NU CC; s|
|00000330| 65 65 20 74 68 65 20 66 | 69 6c 65 20 43 4f 50 59 |ee the f|ile COPY|
|00000340| 49 4e 47 2e 20 20 49 66 | 20 6e 6f 74 2c 20 77 72 |ING. If| not, wr|
|00000350| 69 74 65 20 74 6f 0d 74 | 68 65 20 46 72 65 65 20 |ite to.t|he Free |
|00000360| 53 6f 66 74 77 61 72 65 | 20 46 6f 75 6e 64 61 74 |Software| Foundat|
|00000370| 69 6f 6e 2c 20 36 37 35 | 20 4d 61 73 73 20 41 76 |ion, 675| Mass Av|
|00000380| 65 2c 20 43 61 6d 62 72 | 69 64 67 65 2c 20 4d 41 |e, Cambr|idge, MA|
|00000390| 20 30 32 31 33 39 2c 20 | 55 53 41 2e 20 20 2a 2f | 02139, |USA. */|
|000003a0| 0d 0d 0d 2f 2a 20 54 68 | 69 73 20 70 72 6f 67 72 |.../* Th|is progr|
|000003b0| 61 6d 20 69 73 20 75 73 | 65 64 20 74 6f 20 70 72 |am is us|ed to pr|
|000003c0| 6f 64 75 63 65 20 69 6e | 73 6e 2d 72 65 63 6f 67 |oduce in|sn-recog|
|000003d0| 2e 63 2c 20 77 68 69 63 | 68 20 63 6f 6e 74 61 69 |.c, whic|h contai|
|000003e0| 6e 73 0d 20 20 20 61 20 | 66 75 6e 63 74 69 6f 6e |ns. a |function|
|000003f0| 20 63 61 6c 6c 65 64 20 | 60 72 65 63 6f 67 27 20 | called |`recog' |
|00000400| 70 6c 75 73 20 69 74 73 | 20 73 75 62 72 6f 75 74 |plus its| subrout|
|00000410| 69 6e 65 73 2e 0d 20 20 | 20 54 68 65 73 65 20 66 |ines.. | These f|
|00000420| 75 6e 63 74 69 6f 6e 73 | 20 63 6f 6e 74 61 69 6e |unctions| contain|
|00000430| 20 61 20 64 65 63 69 73 | 69 6f 6e 20 74 72 65 65 | a decis|ion tree|
|00000440| 0d 20 20 20 74 68 61 74 | 20 72 65 63 6f 67 6e 69 |. that| recogni|
|00000450| 7a 65 73 20 77 68 65 74 | 68 65 72 20 61 6e 20 72 |zes whet|her an r|
|00000460| 74 78 2c 20 74 68 65 20 | 61 72 67 75 6d 65 6e 74 |tx, the |argument|
|00000470| 20 67 69 76 65 6e 20 74 | 6f 20 72 65 63 6f 67 2c | given t|o recog,|
|00000480| 0d 20 20 20 69 73 20 61 | 20 76 61 6c 69 64 20 69 |. is a| valid i|
|00000490| 6e 73 74 72 75 63 74 69 | 6f 6e 2e 0d 0d 20 20 20 |nstructi|on... |
|000004a0| 72 65 63 6f 67 20 72 65 | 74 75 72 6e 73 20 2d 31 |recog re|turns -1|
|000004b0| 20 69 66 20 74 68 65 20 | 72 74 78 20 69 73 20 6e | if the |rtx is n|
|000004c0| 6f 74 20 76 61 6c 69 64 | 2e 0d 20 20 20 49 66 20 |ot valid|.. If |
|000004d0| 74 68 65 20 72 74 78 20 | 69 73 20 76 61 6c 69 64 |the rtx |is valid|
|000004e0| 2c 20 72 65 63 6f 67 20 | 72 65 74 75 72 6e 73 20 |, recog |returns |
|000004f0| 61 20 6e 6f 6e 6e 65 67 | 61 74 69 76 65 20 6e 75 |a nonneg|ative nu|
|00000500| 6d 62 65 72 0d 20 20 20 | 77 68 69 63 68 20 69 73 |mber. |which is|
|00000510| 20 74 68 65 20 69 6e 73 | 6e 20 63 6f 64 65 20 6e | the ins|n code n|
|00000520| 75 6d 62 65 72 20 66 6f | 72 20 74 68 65 20 70 61 |umber fo|r the pa|
|00000530| 74 74 65 72 6e 20 74 68 | 61 74 20 6d 61 74 63 68 |ttern th|at match|
|00000540| 65 64 2e 0d 20 20 20 54 | 68 69 73 20 69 73 20 74 |ed.. T|his is t|
|00000550| 68 65 20 73 61 6d 65 20 | 61 73 20 74 68 65 20 6f |he same |as the o|
|00000560| 72 64 65 72 20 69 6e 20 | 74 68 65 20 6d 61 63 68 |rder in |the mach|
|00000570| 69 6e 65 20 64 65 73 63 | 72 69 70 74 69 6f 6e 20 |ine desc|ription |
|00000580| 6f 66 20 74 68 65 0d 20 | 20 20 65 6e 74 72 79 20 |of the. | entry |
|00000590| 74 68 61 74 20 6d 61 74 | 63 68 65 64 2e 20 20 54 |that mat|ched. T|
|000005a0| 68 69 73 20 6e 75 6d 62 | 65 72 20 63 61 6e 20 62 |his numb|er can b|
|000005b0| 65 20 75 73 65 64 20 61 | 73 20 61 6e 20 69 6e 64 |e used a|s an ind|
|000005c0| 65 78 20 69 6e 74 6f 0d | 20 20 20 69 6e 73 6e 5f |ex into.| insn_|
|000005d0| 74 65 6d 70 6c 61 74 65 | 73 20 61 6e 64 20 69 6e |template|s and in|
|000005e0| 73 6e 5f 6e 5f 6f 70 65 | 72 61 6e 64 73 20 28 66 |sn_n_ope|rands (f|
|000005f0| 6f 75 6e 64 20 69 6e 20 | 69 6e 73 6e 2d 6f 75 74 |ound in |insn-out|
|00000600| 70 75 74 2e 63 29 0d 20 | 20 20 6f 72 20 61 73 20 |put.c). | or as |
|00000610| 61 6e 20 61 72 67 75 6d | 65 6e 74 20 74 6f 20 6f |an argum|ent to o|
|00000620| 75 74 70 75 74 5f 69 6e | 73 6e 5f 68 61 69 72 79 |utput_in|sn_hairy|
|00000630| 20 28 61 6c 73 6f 20 69 | 6e 20 69 6e 73 6e 2d 6f | (also i|n insn-o|
|00000640| 75 74 70 75 74 2e 63 29 | 2e 20 20 2a 2f 0d 0d 23 |utput.c)|. */..#|
|00000650| 69 6e 63 6c 75 64 65 20 | 3c 73 74 64 69 6f 2e 68 |include |<stdio.h|
|00000660| 3e 0d 23 69 6e 63 6c 75 | 64 65 20 22 63 6f 6e 66 |>.#inclu|de "conf|
|00000670| 69 67 2e 68 22 0d 23 69 | 6e 63 6c 75 64 65 20 22 |ig.h".#i|nclude "|
|00000680| 72 74 6c 2e 68 22 0d 23 | 69 6e 63 6c 75 64 65 20 |rtl.h".#|include |
|00000690| 22 6f 62 73 74 61 63 6b | 2e 68 22 0d 0d 73 74 72 |"obstack|.h"..str|
|000006a0| 75 63 74 20 6f 62 73 74 | 61 63 6b 20 6f 62 73 74 |uct obst|ack obst|
|000006b0| 61 63 6b 3b 0d 73 74 72 | 75 63 74 20 6f 62 73 74 |ack;.str|uct obst|
|000006c0| 61 63 6b 20 2a 72 74 6c | 5f 6f 62 73 74 61 63 6b |ack *rtl|_obstack|
|000006d0| 20 3d 20 26 6f 62 73 74 | 61 63 6b 3b 0d 0d 23 64 | = &obst|ack;..#d|
|000006e0| 65 66 69 6e 65 20 6f 62 | 73 74 61 63 6b 5f 63 68 |efine ob|stack_ch|
|000006f0| 75 6e 6b 5f 61 6c 6c 6f | 63 20 78 6d 61 6c 6c 6f |unk_allo|c xmallo|
|00000700| 63 0d 23 64 65 66 69 6e | 65 20 6f 62 73 74 61 63 |c.#defin|e obstac|
|00000710| 6b 5f 63 68 75 6e 6b 5f | 66 72 65 65 20 66 72 65 |k_chunk_|free fre|
|00000720| 65 0d 65 78 74 65 72 6e | 20 69 6e 74 20 78 6d 61 |e.extern| int xma|
|00000730| 6c 6c 6f 63 20 28 29 3b | 0d 65 78 74 65 72 6e 20 |lloc ();|.extern |
|00000740| 76 6f 69 64 20 66 72 65 | 65 20 28 29 3b 0d 0d 2f |void fre|e ();../|
|00000750| 2a 20 44 61 74 61 20 73 | 74 72 75 63 74 75 72 65 |* Data s|tructure|
|00000760| 20 66 6f 72 20 64 65 63 | 69 73 69 6f 6e 20 74 72 | for dec|ision tr|
|00000770| 65 65 20 66 6f 72 20 72 | 65 63 6f 67 6e 69 7a 69 |ee for r|ecognizi|
|00000780| 6e 67 0d 20 20 20 6c 65 | 67 69 74 69 6d 61 74 65 |ng. le|gitimate|
|00000790| 20 69 6e 73 74 72 75 63 | 74 69 6f 6e 73 2e 20 20 | instruc|tions. |
|000007a0| 2a 2f 0d 0d 73 74 72 75 | 63 74 20 64 65 63 69 73 |*/..stru|ct decis|
|000007b0| 69 6f 6e 0d 7b 0d 20 20 | 69 6e 74 20 6e 75 6d 62 |ion.{. |int numb|
|000007c0| 65 72 3b 0d 20 20 63 68 | 61 72 20 2a 70 6f 73 69 |er;. ch|ar *posi|
|000007d0| 74 69 6f 6e 3b 0d 20 20 | 52 54 58 5f 43 4f 44 45 |tion;. |RTX_CODE|
|000007e0| 20 63 6f 64 65 3b 0d 20 | 20 63 68 61 72 20 2a 65 | code;. | char *e|
|000007f0| 78 61 63 74 3b 0d 20 20 | 65 6e 75 6d 20 6d 61 63 |xact;. |enum mac|
|00000800| 68 69 6e 65 5f 6d 6f 64 | 65 20 6d 6f 64 65 3b 0d |hine_mod|e mode;.|
|00000810| 20 20 63 68 61 72 20 2a | 74 65 73 74 73 3b 0d 20 | char *|tests;. |
|00000820| 20 69 6e 74 20 69 6e 73 | 6e 5f 63 6f 64 65 5f 6e | int ins|n_code_n|
|00000830| 75 6d 62 65 72 3b 0d 20 | 20 73 74 72 75 63 74 20 |umber;. | struct |
|00000840| 64 65 63 69 73 69 6f 6e | 20 2a 6e 65 78 74 3b 0d |decision| *next;.|
|00000850| 20 20 73 74 72 75 63 74 | 20 64 65 63 69 73 69 6f | struct| decisio|
|00000860| 6e 20 2a 73 75 63 63 65 | 73 73 3b 0d 20 20 69 6e |n *succe|ss;. in|
|00000870| 74 20 6f 70 6e 6f 3b 0d | 20 20 69 6e 74 20 64 75 |t opno;.| int du|
|00000880| 70 6e 6f 3b 0d 20 20 69 | 6e 74 20 64 75 70 63 6f |pno;. i|nt dupco|
|00000890| 75 6e 74 3b 0d 20 20 69 | 6e 74 20 74 65 73 74 5f |unt;. i|nt test_|
|000008a0| 65 6c 74 5f 7a 65 72 6f | 5f 69 6e 74 3b 0d 20 20 |elt_zero|_int;. |
|000008b0| 69 6e 74 20 65 6c 74 5f | 7a 65 72 6f 5f 69 6e 74 |int elt_|zero_int|
|000008c0| 3b 0d 20 20 69 6e 74 20 | 74 65 73 74 5f 65 6c 74 |;. int |test_elt|
|000008d0| 5f 6f 6e 65 5f 69 6e 74 | 3b 0d 20 20 69 6e 74 20 |_one_int|;. int |
|000008e0| 65 6c 74 5f 6f 6e 65 5f | 69 6e 74 3b 0d 20 20 69 |elt_one_|int;. i|
|000008f0| 6e 74 20 69 67 6e 6d 6f | 64 65 3b 0d 20 20 73 74 |nt ignmo|de;. st|
|00000900| 72 75 63 74 20 64 65 63 | 69 73 69 6f 6e 20 2a 61 |ruct dec|ision *a|
|00000910| 66 74 65 72 77 61 72 64 | 3b 0d 20 20 69 6e 74 20 |fterward|;. int |
|00000920| 6c 61 62 65 6c 5f 6e 65 | 65 64 65 64 3b 0d 20 20 |label_ne|eded;. |
|00000930| 63 68 61 72 20 2a 63 5f | 74 65 73 74 3b 0d 20 20 |char *c_|test;. |
|00000940| 63 68 61 72 20 2a 72 65 | 67 5f 63 6c 61 73 73 3b |char *re|g_class;|
|00000950| 0d 20 20 63 68 61 72 20 | 65 6e 66 6f 72 63 65 5f |. char |enforce_|
|00000960| 6d 6f 64 65 3b 0d 20 20 | 69 6e 74 20 76 65 63 6c |mode;. |int vecl|
|00000970| 65 6e 3b 0d 20 20 69 6e | 74 20 73 75 62 72 6f 75 |en;. in|t subrou|
|00000980| 74 69 6e 65 5f 6e 75 6d | 62 65 72 3b 0d 7d 3b 0d |tine_num|ber;.};.|
|00000990| 0d 23 64 65 66 69 6e 65 | 20 53 55 42 52 4f 55 54 |.#define| SUBROUT|
|000009a0| 49 4e 45 5f 54 48 52 45 | 53 48 4f 4c 44 20 35 30 |INE_THRE|SHOLD 50|
|000009b0| 0d 0d 69 6e 74 20 6e 65 | 78 74 5f 73 75 62 72 6f |..int ne|xt_subro|
|000009c0| 75 74 69 6e 65 5f 6e 75 | 6d 62 65 72 3b 0d 0d 2f |utine_nu|mber;../|
|000009d0| 2a 0d 72 65 63 6f 67 6e | 69 7a 65 20 28 74 6f 70 |*.recogn|ize (top|
|000009e0| 29 0d 7b 0d 20 73 74 61 | 74 65 6e 3a 0d 20 20 78 |).{. sta|ten:. x|
|000009f0| 20 3d 20 58 56 45 43 45 | 58 50 20 28 74 6f 70 2c | = XVECE|XP (top,|
|00000a00| 20 30 2c 20 33 29 3b 0d | 20 20 69 66 20 28 74 65 | 0, 3);.| if (te|
|00000a10| 73 74 5f 63 6f 64 65 20 | 28 47 45 54 5f 43 4f 44 |st_code |(GET_COD|
|00000a20| 45 20 28 78 29 29 0d 20 | 20 20 20 20 20 26 26 20 |E (x)). | && |
|00000a30| 74 65 73 74 5f 6d 6f 64 | 65 20 28 4d 4f 44 45 20 |test_mod|e (MODE |
|00000a40| 28 78 29 29 0d 20 20 20 | 20 20 20 26 26 20 77 68 |(x)). | && wh|
|00000a50| 61 74 65 76 65 72 5f 65 | 6c 73 65 29 0d 20 20 20 |atever_e|lse). |
|00000a60| 20 67 6f 74 6f 20 73 74 | 61 74 65 70 3b 0d 20 20 | goto st|atep;. |
|00000a70| 65 6c 73 65 20 69 66 20 | 28 6e 65 78 74 20 6f 6e |else if |(next on|
|00000a80| 65 2e 2e 2e 29 0d 20 20 | 20 20 67 6f 74 6f 20 73 |e...). | goto s|
|00000a90| 74 61 74 65 6d 3a 0d 20 | 20 67 6f 74 6f 20 73 74 |tatem:. | goto st|
|00000aa0| 61 74 65 72 3b 0d 0d 20 | 73 74 61 74 65 70 3a 0d |ater;.. |statep:.|
|00000ab0| 20 20 61 63 74 69 6f 6e | 73 2e 2e 2e 3b 0d 20 20 | action|s...;. |
|00000ac0| 72 65 74 75 72 6e 20 31 | 3b 0d 0d 20 73 74 61 74 |return 1|;.. stat|
|00000ad0| 65 6d 3a 0d 20 20 78 20 | 3d 20 73 74 61 63 6b 5b |em:. x |= stack[|
|00000ae0| 64 65 70 74 68 2d 2d 5d | 3b 0d 20 20 6d 6f 72 65 |depth--]|;. more|
|00000af0| 20 74 65 73 74 73 2e 2e | 2e 3b 0d 0d 20 73 74 61 | tests..|.;.. sta|
|00000b00| 74 65 71 3a 0d 20 20 73 | 74 61 63 6b 5b 2b 2b 64 |teq:. s|tack[++d|
|00000b10| 65 70 74 68 5d 20 3d 20 | 78 3b 0d 20 20 78 20 3d |epth] = |x;. x =|
|00000b20| 20 58 45 58 50 20 28 73 | 74 61 63 6b 5b 64 65 70 | XEXP (s|tack[dep|
|00000b30| 74 68 5d 2c 20 30 29 3b | 0d 20 20 6d 6f 72 65 20 |th], 0);|. more |
|00000b40| 74 65 73 74 73 2e 2e 2e | 3b 0d 0d 20 73 74 61 74 |tests...|;.. stat|
|00000b50| 65 72 3a 0d 20 20 78 20 | 3d 20 58 45 58 50 20 28 |er:. x |= XEXP (|
|00000b60| 73 74 61 63 6b 5b 64 65 | 70 74 68 5d 2c 20 31 29 |stack[de|pth], 1)|
|00000b70| 3b 0d 7d 0d 0d 2a 2f 0d | 0d 69 6e 74 20 6e 65 78 |;.}..*/.|.int nex|
|00000b80| 74 5f 6e 75 6d 62 65 72 | 3b 0d 0d 69 6e 74 20 6e |t_number|;..int n|
|00000b90| 65 78 74 5f 69 6e 73 6e | 5f 63 6f 64 65 3b 0d 0d |ext_insn|_code;..|
|00000ba0| 2f 2a 20 4e 75 6d 62 65 | 72 20 6f 66 20 4d 41 54 |/* Numbe|r of MAT|
|00000bb0| 43 48 5f 44 55 50 27 73 | 20 73 65 65 6e 20 73 6f |CH_DUP's| seen so|
|00000bc0| 20 66 61 72 20 69 6e 20 | 74 68 69 73 20 69 6e 73 | far in |this ins|
|00000bd0| 74 72 75 63 74 69 6f 6e | 2e 20 20 2a 2f 0d 69 6e |truction|. */.in|
|00000be0| 74 20 64 75 70 63 6f 75 | 6e 74 3b 0d 0d 73 74 72 |t dupcou|nt;..str|
|00000bf0| 75 63 74 20 64 65 63 69 | 73 69 6f 6e 20 2a 61 64 |uct deci|sion *ad|
|00000c00| 64 5f 74 6f 5f 73 65 71 | 75 65 6e 63 65 20 28 29 |d_to_seq|uence ()|
|00000c10| 3b 0d 73 74 72 75 63 74 | 20 64 65 63 69 73 69 6f |;.struct| decisio|
|00000c20| 6e 20 2a 74 72 79 5f 6d | 65 72 67 65 5f 32 20 28 |n *try_m|erge_2 (|
|00000c30| 29 3b 0d 76 6f 69 64 20 | 77 72 69 74 65 5f 73 75 |);.void |write_su|
|00000c40| 62 72 6f 75 74 69 6e 65 | 20 28 29 3b 0d 76 6f 69 |broutine| ();.voi|
|00000c50| 64 20 70 72 69 6e 74 5f | 63 6f 64 65 20 28 29 3b |d print_|code ();|
|00000c60| 0d 76 6f 69 64 20 63 6c | 65 61 72 5f 63 6f 64 65 |.void cl|ear_code|
|00000c70| 73 20 28 29 3b 0d 76 6f | 69 64 20 63 6c 65 61 72 |s ();.vo|id clear|
|00000c80| 5f 6d 6f 64 65 73 20 28 | 29 3b 0d 76 6f 69 64 20 |_modes (|);.void |
|00000c90| 63 68 61 6e 67 65 5f 73 | 74 61 74 65 20 28 29 3b |change_s|tate ();|
|00000ca0| 0d 76 6f 69 64 20 77 72 | 69 74 65 5f 74 72 65 65 |.void wr|ite_tree|
|00000cb0| 20 28 29 3b 0d 63 68 61 | 72 20 2a 63 6f 70 79 73 | ();.cha|r *copys|
|00000cc0| 74 72 20 28 29 3b 0d 63 | 68 61 72 20 2a 63 6f 6e |tr ();.c|har *con|
|00000cd0| 63 61 74 20 28 29 3b 0d | 76 6f 69 64 20 66 61 74 |cat ();.|void fat|
|00000ce0| 61 6c 20 28 29 3b 0d 76 | 6f 69 64 20 66 61 6e 63 |al ();.v|oid fanc|
|00000cf0| 79 5f 61 62 6f 72 74 20 | 28 29 3b 0d 76 6f 69 64 |y_abort |();.void|
|00000d00| 20 6d 79 62 7a 65 72 6f | 20 28 29 3b 0d 0c 0d 73 | mybzero| ();...s|
|00000d10| 74 72 75 63 74 20 64 65 | 63 69 73 69 6f 6e 20 2a |truct de|cision *|
|00000d20| 66 69 72 73 74 3b 0d 0d | 2f 2a 20 43 6f 6e 73 74 |first;..|/* Const|
|00000d30| 72 75 63 74 20 61 6e 64 | 20 72 65 74 75 72 6e 20 |ruct and| return |
|00000d40| 61 20 73 65 71 75 65 6e | 63 65 20 6f 66 20 64 65 |a sequen|ce of de|
|00000d50| 63 69 73 69 6f 6e 73 0d | 20 20 20 74 68 61 74 20 |cisions.| that |
|00000d60| 77 69 6c 6c 20 72 65 63 | 6f 67 6e 69 7a 65 20 49 |will rec|ognize I|
|00000d70| 4e 53 4e 2e 20 20 2a 2f | 0d 0d 73 74 72 75 63 74 |NSN. */|..struct|
|00000d80| 20 64 65 63 69 73 69 6f | 6e 20 2a 0d 6d 61 6b 65 | decisio|n *.make|
|00000d90| 5f 69 6e 73 6e 5f 73 65 | 71 75 65 6e 63 65 20 28 |_insn_se|quence (|
|00000da0| 69 6e 73 6e 29 0d 20 20 | 20 20 20 72 74 78 20 69 |insn). | rtx i|
|00000db0| 6e 73 6e 3b 0d 7b 0d 20 | 20 72 74 78 20 78 3b 0d |nsn;.{. | rtx x;.|
|00000dc0| 20 20 63 68 61 72 20 2a | 63 5f 74 65 73 74 20 3d | char *|c_test =|
|00000dd0| 20 58 53 54 52 20 28 69 | 6e 73 6e 2c 20 32 29 3b | XSTR (i|nsn, 2);|
|00000de0| 0d 20 20 73 74 72 75 63 | 74 20 64 65 63 69 73 69 |. struc|t decisi|
|00000df0| 6f 6e 20 2a 6c 61 73 74 | 3b 0d 0d 20 20 64 75 70 |on *last|;.. dup|
|00000e00| 63 6f 75 6e 74 20 3d 20 | 30 3b 0d 0d 20 20 69 66 |count = |0;.. if|
|00000e10| 20 28 58 56 45 43 4c 45 | 4e 20 28 69 6e 73 6e 2c | (XVECLE|N (insn,|
|00000e20| 20 31 29 20 3d 3d 20 31 | 29 0d 20 20 20 20 78 20 | 1) == 1|). x |
|00000e30| 3d 20 58 56 45 43 45 58 | 50 20 28 69 6e 73 6e 2c |= XVECEX|P (insn,|
|00000e40| 20 31 2c 20 30 29 3b 0d | 20 20 65 6c 73 65 0d 20 | 1, 0);.| else. |
|00000e50| 20 20 20 7b 0d 20 20 20 | 20 20 20 78 20 3d 20 72 | {. | x = r|
|00000e60| 74 78 5f 61 6c 6c 6f 63 | 20 28 50 41 52 41 4c 4c |tx_alloc| (PARALL|
|00000e70| 45 4c 29 3b 0d 20 20 20 | 20 20 20 58 56 45 43 20 |EL);. | XVEC |
|00000e80| 28 78 2c 20 30 29 20 3d | 20 58 56 45 43 20 28 69 |(x, 0) =| XVEC (i|
|00000e90| 6e 73 6e 2c 20 31 29 3b | 0d 20 20 20 20 20 20 50 |nsn, 1);|. P|
|00000ea0| 55 54 5f 4d 4f 44 45 20 | 28 78 2c 20 56 4f 49 44 |UT_MODE |(x, VOID|
|00000eb0| 6d 6f 64 65 29 3b 0d 20 | 20 20 20 7d 0d 0d 20 20 |mode);. | }.. |
|00000ec0| 6c 61 73 74 20 3d 20 61 | 64 64 5f 74 6f 5f 73 65 |last = a|dd_to_se|
|00000ed0| 71 75 65 6e 63 65 20 28 | 78 2c 20 30 2c 20 22 22 |quence (|x, 0, ""|
|00000ee0| 29 3b 0d 0d 20 20 69 66 | 20 28 63 5f 74 65 73 74 |);.. if| (c_test|
|00000ef0| 5b 30 5d 29 0d 20 20 20 | 20 6c 61 73 74 2d 3e 63 |[0]). | last->c|
|00000f00| 5f 74 65 73 74 20 3d 20 | 63 5f 74 65 73 74 3b 0d |_test = |c_test;.|
|00000f10| 20 20 6c 61 73 74 2d 3e | 69 6e 73 6e 5f 63 6f 64 | last->|insn_cod|
|00000f20| 65 5f 6e 75 6d 62 65 72 | 20 3d 20 6e 65 78 74 5f |e_number| = next_|
|00000f30| 69 6e 73 6e 5f 63 6f 64 | 65 2b 2b 3b 0d 0d 20 20 |insn_cod|e++;.. |
|00000f40| 72 65 74 75 72 6e 20 66 | 69 72 73 74 3b 0d 7d 0d |return f|irst;.}.|
|00000f50| 0d 73 74 72 75 63 74 20 | 64 65 63 69 73 69 6f 6e |.struct |decision|
|00000f60| 20 2a 0d 61 64 64 5f 74 | 6f 5f 73 65 71 75 65 6e | *.add_t|o_sequen|
|00000f70| 63 65 20 28 70 61 74 74 | 65 72 6e 2c 20 6c 61 73 |ce (patt|ern, las|
|00000f80| 74 2c 20 70 6f 73 69 74 | 69 6f 6e 29 0d 20 20 20 |t, posit|ion). |
|00000f90| 20 20 72 74 78 20 70 61 | 74 74 65 72 6e 3b 0d 20 | rtx pa|ttern;. |
|00000fa0| 20 20 20 20 73 74 72 75 | 63 74 20 64 65 63 69 73 | stru|ct decis|
|00000fb0| 69 6f 6e 20 2a 6c 61 73 | 74 3b 0d 20 20 20 20 20 |ion *las|t;. |
|00000fc0| 63 68 61 72 20 2a 70 6f | 73 69 74 69 6f 6e 3b 0d |char *po|sition;.|
|00000fd0| 7b 0d 20 20 72 65 67 69 | 73 74 65 72 20 52 54 58 |{. regi|ster RTX|
|00000fe0| 5f 43 4f 44 45 20 63 6f | 64 65 3b 0d 20 20 72 65 |_CODE co|de;. re|
|00000ff0| 67 69 73 74 65 72 20 73 | 74 72 75 63 74 20 64 65 |gister s|truct de|
|00001000| 63 69 73 69 6f 6e 20 2a | 6e 65 77 0d 20 20 20 20 |cision *|new. |
|00001010| 3d 20 28 73 74 72 75 63 | 74 20 64 65 63 69 73 69 |= (struc|t decisi|
|00001020| 6f 6e 20 2a 29 20 78 6d | 61 6c 6c 6f 63 20 28 73 |on *) xm|alloc (s|
|00001030| 69 7a 65 6f 66 20 28 73 | 74 72 75 63 74 20 64 65 |izeof (s|truct de|
|00001040| 63 69 73 69 6f 6e 29 29 | 3b 0d 20 20 73 74 72 75 |cision))|;. stru|
|00001050| 63 74 20 64 65 63 69 73 | 69 6f 6e 20 2a 74 68 69 |ct decis|ion *thi|
|00001060| 73 3b 0d 20 20 63 68 61 | 72 20 2a 6e 65 77 70 6f |s;. cha|r *newpo|
|00001070| 73 3b 0d 20 20 72 65 67 | 69 73 74 65 72 20 63 68 |s;. reg|ister ch|
|00001080| 61 72 20 2a 66 6d 74 3b | 0d 20 20 72 65 67 69 73 |ar *fmt;|. regis|
|00001090| 74 65 72 20 69 6e 74 20 | 69 3b 0d 20 20 69 6e 74 |ter int |i;. int|
|000010a0| 20 64 65 70 74 68 3b 0d | 20 20 69 6e 74 20 6c 65 | depth;.| int le|
|000010b0| 6e 3b 0d 0d 20 20 6e 65 | 77 2d 3e 6e 75 6d 62 65 |n;.. ne|w->numbe|
|000010c0| 72 20 3d 20 6e 65 78 74 | 5f 6e 75 6d 62 65 72 2b |r = next|_number+|
|000010d0| 2b 3b 0d 20 20 6e 65 77 | 2d 3e 70 6f 73 69 74 69 |+;. new|->positi|
|000010e0| 6f 6e 20 3d 20 63 6f 70 | 79 73 74 72 20 28 70 6f |on = cop|ystr (po|
|000010f0| 73 69 74 69 6f 6e 29 3b | 0d 20 20 6e 65 77 2d 3e |sition);|. new->|
|00001100| 65 78 61 63 74 20 3d 20 | 30 3b 0d 20 20 6e 65 77 |exact = |0;. new|
|00001110| 2d 3e 6e 65 78 74 20 3d | 20 30 3b 0d 20 20 6e 65 |->next =| 0;. ne|
|00001120| 77 2d 3e 73 75 63 63 65 | 73 73 20 3d 20 30 3b 0d |w->succe|ss = 0;.|
|00001130| 20 20 6e 65 77 2d 3e 69 | 6e 73 6e 5f 63 6f 64 65 | new->i|nsn_code|
|00001140| 5f 6e 75 6d 62 65 72 20 | 3d 20 2d 31 3b 0d 20 20 |_number |= -1;. |
|00001150| 6e 65 77 2d 3e 74 65 73 | 74 73 20 3d 20 30 3b 0d |new->tes|ts = 0;.|
|00001160| 20 20 6e 65 77 2d 3e 6f | 70 6e 6f 20 3d 20 2d 31 | new->o|pno = -1|
|00001170| 3b 0d 20 20 6e 65 77 2d | 3e 64 75 70 6e 6f 20 3d |;. new-|>dupno =|
|00001180| 20 2d 31 3b 0d 20 20 6e | 65 77 2d 3e 64 75 70 63 | -1;. n|ew->dupc|
|00001190| 6f 75 6e 74 20 3d 20 2d | 31 3b 0d 20 20 6e 65 77 |ount = -|1;. new|
|000011a0| 2d 3e 74 65 73 74 5f 65 | 6c 74 5f 7a 65 72 6f 5f |->test_e|lt_zero_|
|000011b0| 69 6e 74 20 3d 20 30 3b | 0d 20 20 6e 65 77 2d 3e |int = 0;|. new->|
|000011c0| 74 65 73 74 5f 65 6c 74 | 5f 6f 6e 65 5f 69 6e 74 |test_elt|_one_int|
|000011d0| 20 3d 20 30 3b 0d 20 20 | 6e 65 77 2d 3e 65 6c 74 | = 0;. |new->elt|
|000011e0| 5f 7a 65 72 6f 5f 69 6e | 74 20 3d 20 30 3b 0d 20 |_zero_in|t = 0;. |
|000011f0| 20 6e 65 77 2d 3e 65 6c | 74 5f 6f 6e 65 5f 69 6e | new->el|t_one_in|
|00001200| 74 20 3d 20 30 3b 0d 20 | 20 6e 65 77 2d 3e 65 6e |t = 0;. | new->en|
|00001210| 66 6f 72 63 65 5f 6d 6f | 64 65 20 3d 20 30 3b 0d |force_mo|de = 0;.|
|00001220| 20 20 6e 65 77 2d 3e 69 | 67 6e 6d 6f 64 65 20 3d | new->i|gnmode =|
|00001230| 20 30 3b 0d 20 20 6e 65 | 77 2d 3e 61 66 74 65 72 | 0;. ne|w->after|
|00001240| 77 61 72 64 20 3d 20 30 | 3b 0d 20 20 6e 65 77 2d |ward = 0|;. new-|
|00001250| 3e 6c 61 62 65 6c 5f 6e | 65 65 64 65 64 20 3d 20 |>label_n|eeded = |
|00001260| 30 3b 0d 20 20 6e 65 77 | 2d 3e 63 5f 74 65 73 74 |0;. new|->c_test|
|00001270| 20 3d 20 30 3b 0d 20 20 | 6e 65 77 2d 3e 72 65 67 | = 0;. |new->reg|
|00001280| 5f 63 6c 61 73 73 20 3d | 20 30 3b 0d 20 20 6e 65 |_class =| 0;. ne|
|00001290| 77 2d 3e 76 65 63 6c 65 | 6e 20 3d 20 30 3b 0d 20 |w->vecle|n = 0;. |
|000012a0| 20 6e 65 77 2d 3e 73 75 | 62 72 6f 75 74 69 6e 65 | new->su|broutine|
|000012b0| 5f 6e 75 6d 62 65 72 20 | 3d 20 30 3b 0d 0d 20 20 |_number |= 0;.. |
|000012c0| 74 68 69 73 20 3d 20 6e | 65 77 3b 0d 0d 20 20 69 |this = n|ew;.. i|
|000012d0| 66 20 28 6c 61 73 74 20 | 3d 3d 20 30 29 0d 20 20 |f (last |== 0). |
|000012e0| 20 20 66 69 72 73 74 20 | 3d 20 6e 65 77 3b 0d 20 | first |= new;. |
|000012f0| 20 65 6c 73 65 0d 20 20 | 20 20 6c 61 73 74 2d 3e | else. | last->|
|00001300| 73 75 63 63 65 73 73 20 | 3d 20 6e 65 77 3b 0d 0d |success |= new;..|
|00001310| 20 20 64 65 70 74 68 20 | 3d 20 73 74 72 6c 65 6e | depth |= strlen|
|00001320| 20 28 70 6f 73 69 74 69 | 6f 6e 29 3b 0d 20 20 6e | (positi|on);. n|
|00001330| 65 77 70 6f 73 20 3d 20 | 28 63 68 61 72 20 2a 29 |ewpos = |(char *)|
|00001340| 20 61 6c 6c 6f 63 61 20 | 28 64 65 70 74 68 20 2b | alloca |(depth +|
|00001350| 20 32 29 3b 0d 20 20 73 | 74 72 63 70 79 20 28 6e | 2);. s|trcpy (n|
|00001360| 65 77 70 6f 73 2c 20 70 | 6f 73 69 74 69 6f 6e 29 |ewpos, p|osition)|
|00001370| 3b 0d 20 20 6e 65 77 70 | 6f 73 5b 64 65 70 74 68 |;. newp|os[depth|
|00001380| 20 2b 20 31 5d 20 3d 20 | 30 3b 0d 0d 20 72 65 73 | + 1] = |0;.. res|
|00001390| 74 61 72 74 3a 0d 0d 20 | 20 69 66 20 28 70 61 74 |tart:.. | if (pat|
|000013a0| 74 65 72 6e 20 3d 3d 20 | 30 29 0d 20 20 20 20 7b |tern == |0). {|
|000013b0| 0d 20 20 20 20 20 20 6e | 65 77 2d 3e 65 78 61 63 |. n|ew->exac|
|000013c0| 74 20 3d 20 22 30 22 3b | 0d 20 20 20 20 20 20 6e |t = "0";|. n|
|000013d0| 65 77 2d 3e 63 6f 64 65 | 20 3d 20 55 4e 4b 4e 4f |ew->code| = UNKNO|
|000013e0| 57 4e 3b 0d 20 20 20 20 | 20 20 6e 65 77 2d 3e 6d |WN;. | new->m|
|000013f0| 6f 64 65 20 3d 20 56 4f | 49 44 6d 6f 64 65 3b 0d |ode = VO|IDmode;.|
|00001400| 20 20 20 20 20 20 72 65 | 74 75 72 6e 20 6e 65 77 | re|turn new|
|00001410| 3b 0d 20 20 20 20 7d 0d | 0d 20 20 73 77 69 74 63 |;. }.|. switc|
|00001420| 68 20 28 47 45 54 5f 4d | 4f 44 45 20 28 70 61 74 |h (GET_M|ODE (pat|
|00001430| 74 65 72 6e 29 29 0d 20 | 20 20 20 7b 0d 20 20 20 |tern)). | {. |
|00001440| 20 63 61 73 65 20 30 3a | 0d 20 20 20 20 20 20 6e | case 0:|. n|
|00001450| 65 77 2d 3e 6d 6f 64 65 | 20 3d 20 56 4f 49 44 6d |ew->mode| = VOIDm|
|00001460| 6f 64 65 3b 0d 20 20 20 | 20 20 20 62 72 65 61 6b |ode;. | break|
|00001470| 3b 0d 0d 20 20 20 20 64 | 65 66 61 75 6c 74 3a 0d |;.. d|efault:.|
|00001480| 20 20 20 20 20 20 6e 65 | 77 2d 3e 6d 6f 64 65 20 | ne|w->mode |
|00001490| 3d 20 47 45 54 5f 4d 4f | 44 45 20 28 70 61 74 74 |= GET_MO|DE (patt|
|000014a0| 65 72 6e 29 3b 0d 20 20 | 20 20 20 20 62 72 65 61 |ern);. | brea|
|000014b0| 6b 3b 0d 20 20 20 20 7d | 0d 0d 20 20 6e 65 77 2d |k;. }|.. new-|
|000014c0| 3e 63 6f 64 65 20 3d 20 | 63 6f 64 65 20 3d 20 47 |>code = |code = G|
|000014d0| 45 54 5f 43 4f 44 45 20 | 28 70 61 74 74 65 72 6e |ET_CODE |(pattern|
|000014e0| 29 3b 0d 0d 20 20 73 77 | 69 74 63 68 20 28 63 6f |);.. sw|itch (co|
|000014f0| 64 65 29 0d 20 20 20 20 | 7b 0d 20 20 20 20 63 61 |de). |{. ca|
|00001500| 73 65 20 4d 41 54 43 48 | 5f 4f 50 45 52 41 4e 44 |se MATCH|_OPERAND|
|00001510| 3a 0d 20 20 20 20 20 20 | 6e 65 77 2d 3e 6f 70 6e |:. |new->opn|
|00001520| 6f 20 3d 20 58 49 4e 54 | 20 28 70 61 74 74 65 72 |o = XINT| (patter|
|00001530| 6e 2c 20 30 29 3b 0d 20 | 20 20 20 20 20 6e 65 77 |n, 0);. | new|
|00001540| 2d 3e 63 6f 64 65 20 3d | 20 55 4e 4b 4e 4f 57 4e |->code =| UNKNOWN|
|00001550| 3b 0d 20 20 20 20 20 20 | 6e 65 77 2d 3e 74 65 73 |;. |new->tes|
|00001560| 74 73 20 3d 20 58 53 54 | 52 20 28 70 61 74 74 65 |ts = XST|R (patte|
|00001570| 72 6e 2c 20 31 29 3b 0d | 20 20 20 20 20 20 69 66 |rn, 1);.| if|
|00001580| 20 28 2a 6e 65 77 2d 3e | 74 65 73 74 73 20 3d 3d | (*new->|tests ==|
|00001590| 20 30 29 0d 09 6e 65 77 | 2d 3e 74 65 73 74 73 20 | 0)..new|->tests |
|000015a0| 3d 20 30 3b 0d 20 20 20 | 20 20 20 6e 65 77 2d 3e |= 0;. | new->|
|000015b0| 72 65 67 5f 63 6c 61 73 | 73 20 3d 20 58 53 54 52 |reg_clas|s = XSTR|
|000015c0| 20 28 70 61 74 74 65 72 | 6e 2c 20 32 29 3b 0d 20 | (patter|n, 2);. |
|000015d0| 20 20 20 20 20 69 66 20 | 28 2a 6e 65 77 2d 3e 72 | if |(*new->r|
|000015e0| 65 67 5f 63 6c 61 73 73 | 20 3d 3d 20 30 29 0d 09 |eg_class| == 0)..|
|000015f0| 6e 65 77 2d 3e 72 65 67 | 5f 63 6c 61 73 73 20 3d |new->reg|_class =|
|00001600| 20 30 3b 0d 20 20 20 20 | 20 20 72 65 74 75 72 6e | 0;. | return|
|00001610| 20 6e 65 77 3b 0d 0d 20 | 20 20 20 63 61 73 65 20 | new;.. | case |
|00001620| 4d 41 54 43 48 5f 4f 50 | 45 52 41 54 4f 52 3a 0d |MATCH_OP|ERATOR:.|
|00001630| 20 20 20 20 20 20 6e 65 | 77 2d 3e 6f 70 6e 6f 20 | ne|w->opno |
|00001640| 3d 20 58 49 4e 54 20 28 | 70 61 74 74 65 72 6e 2c |= XINT (|pattern,|
|00001650| 20 30 29 3b 0d 20 20 20 | 20 20 20 6e 65 77 2d 3e | 0);. | new->|
|00001660| 63 6f 64 65 20 3d 20 55 | 4e 4b 4e 4f 57 4e 3b 0d |code = U|NKNOWN;.|
|00001670| 20 20 20 20 20 20 6e 65 | 77 2d 3e 74 65 73 74 73 | ne|w->tests|
|00001680| 20 3d 20 58 53 54 52 20 | 28 70 61 74 74 65 72 6e | = XSTR |(pattern|
|00001690| 2c 20 31 29 3b 0d 20 20 | 20 20 20 20 69 66 20 28 |, 1);. | if (|
|000016a0| 2a 6e 65 77 2d 3e 74 65 | 73 74 73 20 3d 3d 20 30 |*new->te|sts == 0|
|000016b0| 29 0d 09 6e 65 77 2d 3e | 74 65 73 74 73 20 3d 20 |)..new->|tests = |
|000016c0| 30 3b 0d 20 20 20 20 20 | 20 66 6f 72 20 28 69 20 |0;. | for (i |
|000016d0| 3d 20 30 3b 20 69 20 3c | 20 58 56 45 43 4c 45 4e |= 0; i <| XVECLEN|
|000016e0| 20 28 70 61 74 74 65 72 | 6e 2c 20 32 29 3b 20 69 | (patter|n, 2); i|
|000016f0| 2b 2b 29 0d 09 7b 0d 09 | 20 20 6e 65 77 70 6f 73 |++)..{..| newpos|
|00001700| 5b 64 65 70 74 68 5d 20 | 3d 20 69 20 2b 20 27 30 |[depth] |= i + '0|
|00001710| 27 3b 0d 09 20 20 6e 65 | 77 20 3d 20 61 64 64 5f |';.. ne|w = add_|
|00001720| 74 6f 5f 73 65 71 75 65 | 6e 63 65 20 28 58 56 45 |to_seque|nce (XVE|
|00001730| 43 45 58 50 20 28 70 61 | 74 74 65 72 6e 2c 20 32 |CEXP (pa|ttern, 2|
|00001740| 2c 20 69 29 2c 20 6e 65 | 77 2c 20 6e 65 77 70 6f |, i), ne|w, newpo|
|00001750| 73 29 3b 0d 09 7d 0d 20 | 20 20 20 20 20 74 68 69 |s);..}. | thi|
|00001760| 73 2d 3e 73 75 63 63 65 | 73 73 2d 3e 65 6e 66 6f |s->succe|ss->enfo|
|00001770| 72 63 65 5f 6d 6f 64 65 | 20 3d 20 30 3b 0d 20 20 |rce_mode| = 0;. |
|00001780| 20 20 20 20 72 65 74 75 | 72 6e 20 6e 65 77 3b 0d | retu|rn new;.|
|00001790| 0d 20 20 20 20 63 61 73 | 65 20 4d 41 54 43 48 5f |. cas|e MATCH_|
|000017a0| 44 55 50 3a 0d 20 20 20 | 20 20 20 6e 65 77 2d 3e |DUP:. | new->|
|000017b0| 64 75 70 6e 6f 20 3d 20 | 58 49 4e 54 20 28 70 61 |dupno = |XINT (pa|
|000017c0| 74 74 65 72 6e 2c 20 30 | 29 3b 0d 20 20 20 20 20 |ttern, 0|);. |
|000017d0| 20 6e 65 77 2d 3e 64 75 | 70 63 6f 75 6e 74 20 3d | new->du|pcount =|
|000017e0| 20 64 75 70 63 6f 75 6e | 74 2b 2b 3b 0d 20 20 20 | dupcoun|t++;. |
|000017f0| 20 20 20 6e 65 77 2d 3e | 63 6f 64 65 20 3d 20 55 | new->|code = U|
|00001800| 4e 4b 4e 4f 57 4e 3b 0d | 20 20 20 20 20 20 72 65 |NKNOWN;.| re|
|00001810| 74 75 72 6e 20 6e 65 77 | 3b 0d 0d 20 20 20 20 63 |turn new|;.. c|
|00001820| 61 73 65 20 41 44 44 52 | 45 53 53 3a 0d 20 20 20 |ase ADDR|ESS:. |
|00001830| 20 20 20 70 61 74 74 65 | 72 6e 20 3d 20 58 45 58 | patte|rn = XEX|
|00001840| 50 20 28 70 61 74 74 65 | 72 6e 2c 20 30 29 3b 0d |P (patte|rn, 0);.|
|00001850| 20 20 20 20 20 20 67 6f | 74 6f 20 72 65 73 74 61 | go|to resta|
|00001860| 72 74 3b 0d 0d 20 20 20 | 20 63 61 73 65 20 50 43 |rt;.. | case PC|
|00001870| 3a 0d 20 20 20 20 20 20 | 6e 65 77 2d 3e 65 78 61 |:. |new->exa|
|00001880| 63 74 20 3d 20 22 70 63 | 5f 72 74 78 22 3b 0d 20 |ct = "pc|_rtx";. |
|00001890| 20 20 20 20 20 72 65 74 | 75 72 6e 20 6e 65 77 3b | ret|urn new;|
|000018a0| 0d 0d 20 20 20 20 63 61 | 73 65 20 43 43 30 3a 0d |.. ca|se CC0:.|
|000018b0| 20 20 20 20 20 20 6e 65 | 77 2d 3e 65 78 61 63 74 | ne|w->exact|
|000018c0| 20 3d 20 22 63 63 30 5f | 72 74 78 22 3b 0d 20 20 | = "cc0_|rtx";. |
|000018d0| 20 20 20 20 72 65 74 75 | 72 6e 20 6e 65 77 3b 0d | retu|rn new;.|
|000018e0| 0d 20 20 20 20 63 61 73 | 65 20 43 4f 4e 53 54 5f |. cas|e CONST_|
|000018f0| 49 4e 54 3a 0d 20 20 20 | 20 20 20 69 66 20 28 49 |INT:. | if (I|
|00001900| 4e 54 56 41 4c 20 28 70 | 61 74 74 65 72 6e 29 20 |NTVAL (p|attern) |
|00001910| 3d 3d 20 30 29 0d 09 7b | 0d 09 20 20 6e 65 77 2d |== 0)..{|.. new-|
|00001920| 3e 65 78 61 63 74 20 3d | 20 22 63 6f 6e 73 74 30 |>exact =| "const0|
|00001930| 5f 72 74 78 22 3b 0d 09 | 20 20 72 65 74 75 72 6e |_rtx";..| return|
|00001940| 20 6e 65 77 3b 0d 09 7d | 0d 20 20 20 20 20 20 69 | new;..}|. i|
|00001950| 66 20 28 49 4e 54 56 41 | 4c 20 28 70 61 74 74 65 |f (INTVA|L (patte|
|00001960| 72 6e 29 20 3d 3d 20 31 | 29 0d 09 7b 0d 09 20 20 |rn) == 1|)..{.. |
|00001970| 6e 65 77 2d 3e 65 78 61 | 63 74 20 3d 20 22 63 6f |new->exa|ct = "co|
|00001980| 6e 73 74 31 5f 72 74 78 | 22 3b 0d 09 20 20 72 65 |nst1_rtx|";.. re|
|00001990| 74 75 72 6e 20 6e 65 77 | 3b 0d 09 7d 0d 20 20 20 |turn new|;..}. |
|000019a0| 20 20 20 62 72 65 61 6b | 3b 0d 0d 20 20 20 20 63 | break|;.. c|
|000019b0| 61 73 65 20 53 45 54 3a | 0d 20 20 20 20 20 20 6e |ase SET:|. n|
|000019c0| 65 77 70 6f 73 5b 64 65 | 70 74 68 5d 20 3d 20 27 |ewpos[de|pth] = '|
|000019d0| 30 27 3b 0d 20 20 20 20 | 20 20 6e 65 77 20 3d 20 |0';. | new = |
|000019e0| 61 64 64 5f 74 6f 5f 73 | 65 71 75 65 6e 63 65 20 |add_to_s|equence |
|000019f0| 28 53 45 54 5f 44 45 53 | 54 20 28 70 61 74 74 65 |(SET_DES|T (patte|
|00001a00| 72 6e 29 2c 20 6e 65 77 | 2c 20 6e 65 77 70 6f 73 |rn), new|, newpos|
|00001a10| 29 3b 0d 20 20 20 20 20 | 20 74 68 69 73 2d 3e 73 |);. | this->s|
|00001a20| 75 63 63 65 73 73 2d 3e | 65 6e 66 6f 72 63 65 5f |uccess->|enforce_|
|00001a30| 6d 6f 64 65 20 3d 20 31 | 3b 0d 20 20 20 20 20 20 |mode = 1|;. |
|00001a40| 6e 65 77 70 6f 73 5b 64 | 65 70 74 68 5d 20 3d 20 |newpos[d|epth] = |
|00001a50| 27 31 27 3b 0d 20 20 20 | 20 20 20 6e 65 77 20 3d |'1';. | new =|
|00001a60| 20 61 64 64 5f 74 6f 5f | 73 65 71 75 65 6e 63 65 | add_to_|sequence|
|00001a70| 20 28 53 45 54 5f 53 52 | 43 20 28 70 61 74 74 65 | (SET_SR|C (patte|
|00001a80| 72 6e 29 2c 20 6e 65 77 | 2c 20 6e 65 77 70 6f 73 |rn), new|, newpos|
|00001a90| 29 3b 0d 20 20 20 20 20 | 20 72 65 74 75 72 6e 20 |);. | return |
|00001aa0| 6e 65 77 3b 0d 0d 20 20 | 20 20 63 61 73 65 20 53 |new;.. | case S|
|00001ab0| 54 52 49 43 54 5f 4c 4f | 57 5f 50 41 52 54 3a 0d |TRICT_LO|W_PART:.|
|00001ac0| 20 20 20 20 20 20 6e 65 | 77 70 6f 73 5b 64 65 70 | ne|wpos[dep|
|00001ad0| 74 68 5d 20 3d 20 27 30 | 27 3b 0d 20 20 20 20 20 |th] = '0|';. |
|00001ae0| 20 6e 65 77 20 3d 20 61 | 64 64 5f 74 6f 5f 73 65 | new = a|dd_to_se|
|00001af0| 71 75 65 6e 63 65 20 28 | 58 45 58 50 20 28 70 61 |quence (|XEXP (pa|
|00001b00| 74 74 65 72 6e 2c 20 30 | 29 2c 20 6e 65 77 2c 20 |ttern, 0|), new, |
|00001b10| 6e 65 77 70 6f 73 29 3b | 0d 20 20 20 20 20 20 74 |newpos);|. t|
|00001b20| 68 69 73 2d 3e 73 75 63 | 63 65 73 73 2d 3e 65 6e |his->suc|cess->en|
|00001b30| 66 6f 72 63 65 5f 6d 6f | 64 65 20 3d 20 31 3b 0d |force_mo|de = 1;.|
|00001b40| 20 20 20 20 20 20 72 65 | 74 75 72 6e 20 6e 65 77 | re|turn new|
|00001b50| 3b 0d 0d 20 20 20 20 63 | 61 73 65 20 53 55 42 52 |;.. c|ase SUBR|
|00001b60| 45 47 3a 0d 20 20 20 20 | 20 20 74 68 69 73 2d 3e |EG:. | this->|
|00001b70| 74 65 73 74 5f 65 6c 74 | 5f 6f 6e 65 5f 69 6e 74 |test_elt|_one_int|
|00001b80| 20 3d 20 31 3b 0d 20 20 | 20 20 20 20 74 68 69 73 | = 1;. | this|
|00001b90| 2d 3e 65 6c 74 5f 6f 6e | 65 5f 69 6e 74 20 3d 20 |->elt_on|e_int = |
|00001ba0| 58 49 4e 54 20 28 70 61 | 74 74 65 72 6e 2c 20 31 |XINT (pa|ttern, 1|
|00001bb0| 29 3b 0d 20 20 20 20 20 | 20 6e 65 77 70 6f 73 5b |);. | newpos[|
|00001bc0| 64 65 70 74 68 5d 20 3d | 20 27 30 27 3b 0d 20 20 |depth] =| '0';. |
|00001bd0| 20 20 20 20 6e 65 77 20 | 3d 20 61 64 64 5f 74 6f | new |= add_to|
|00001be0| 5f 73 65 71 75 65 6e 63 | 65 20 28 58 45 58 50 20 |_sequenc|e (XEXP |
|00001bf0| 28 70 61 74 74 65 72 6e | 2c 20 30 29 2c 20 6e 65 |(pattern|, 0), ne|
|00001c00| 77 2c 20 6e 65 77 70 6f | 73 29 3b 0d 20 20 20 20 |w, newpo|s);. |
|00001c10| 20 20 74 68 69 73 2d 3e | 73 75 63 63 65 73 73 2d | this->|success-|
|00001c20| 3e 65 6e 66 6f 72 63 65 | 5f 6d 6f 64 65 20 3d 20 |>enforce|_mode = |
|00001c30| 31 3b 0d 20 20 20 20 20 | 20 72 65 74 75 72 6e 20 |1;. | return |
|00001c40| 6e 65 77 3b 0d 0d 20 20 | 20 20 63 61 73 65 20 5a |new;.. | case Z|
|00001c50| 45 52 4f 5f 45 58 54 52 | 41 43 54 3a 0d 20 20 20 |ERO_EXTR|ACT:. |
|00001c60| 20 63 61 73 65 20 53 49 | 47 4e 5f 45 58 54 52 41 | case SI|GN_EXTRA|
|00001c70| 43 54 3a 0d 20 20 20 20 | 20 20 6e 65 77 70 6f 73 |CT:. | newpos|
|00001c80| 5b 64 65 70 74 68 5d 20 | 3d 20 27 30 27 3b 0d 20 |[depth] |= '0';. |
|00001c90| 20 20 20 20 20 6e 65 77 | 20 3d 20 61 64 64 5f 74 | new| = add_t|
|00001ca0| 6f 5f 73 65 71 75 65 6e | 63 65 20 28 58 45 58 50 |o_sequen|ce (XEXP|
|00001cb0| 20 28 70 61 74 74 65 72 | 6e 2c 20 30 29 2c 20 6e | (patter|n, 0), n|
|00001cc0| 65 77 2c 20 6e 65 77 70 | 6f 73 29 3b 0d 20 20 20 |ew, newp|os);. |
|00001cd0| 20 20 20 74 68 69 73 2d | 3e 73 75 63 63 65 73 73 | this-|>success|
|00001ce0| 2d 3e 65 6e 66 6f 72 63 | 65 5f 6d 6f 64 65 20 3d |->enforc|e_mode =|
|00001cf0| 20 31 3b 0d 20 20 20 20 | 20 20 6e 65 77 70 6f 73 | 1;. | newpos|
|00001d00| 5b 64 65 70 74 68 5d 20 | 3d 20 27 31 27 3b 0d 20 |[depth] |= '1';. |
|00001d10| 20 20 20 20 20 6e 65 77 | 20 3d 20 61 64 64 5f 74 | new| = add_t|
|00001d20| 6f 5f 73 65 71 75 65 6e | 63 65 20 28 58 45 58 50 |o_sequen|ce (XEXP|
|00001d30| 20 28 70 61 74 74 65 72 | 6e 2c 20 31 29 2c 20 6e | (patter|n, 1), n|
|00001d40| 65 77 2c 20 6e 65 77 70 | 6f 73 29 3b 0d 20 20 20 |ew, newp|os);. |
|00001d50| 20 20 20 6e 65 77 70 6f | 73 5b 64 65 70 74 68 5d | newpo|s[depth]|
|00001d60| 20 3d 20 27 32 27 3b 0d | 20 20 20 20 20 20 6e 65 | = '2';.| ne|
|00001d70| 77 20 3d 20 61 64 64 5f | 74 6f 5f 73 65 71 75 65 |w = add_|to_seque|
|00001d80| 6e 63 65 20 28 58 45 58 | 50 20 28 70 61 74 74 65 |nce (XEX|P (patte|
|00001d90| 72 6e 2c 20 32 29 2c 20 | 6e 65 77 2c 20 6e 65 77 |rn, 2), |new, new|
|00001da0| 70 6f 73 29 3b 0d 20 20 | 20 20 20 20 72 65 74 75 |pos);. | retu|
|00001db0| 72 6e 20 6e 65 77 3b 0d | 20 20 20 20 7d 0d 0d 20 |rn new;.| }.. |
|00001dc0| 20 66 6d 74 20 3d 20 47 | 45 54 5f 52 54 58 5f 46 | fmt = G|ET_RTX_F|
|00001dd0| 4f 52 4d 41 54 20 28 63 | 6f 64 65 29 3b 0d 20 20 |ORMAT (c|ode);. |
|00001de0| 6c 65 6e 20 3d 20 47 45 | 54 5f 52 54 58 5f 4c 45 |len = GE|T_RTX_LE|
|00001df0| 4e 47 54 48 20 28 63 6f | 64 65 29 3b 0d 20 20 66 |NGTH (co|de);. f|
|00001e00| 6f 72 20 28 69 20 3d 20 | 30 3b 20 69 20 3c 20 6c |or (i = |0; i < l|
|00001e10| 65 6e 3b 20 69 2b 2b 29 | 0d 20 20 20 20 7b 0d 20 |en; i++)|. {. |
|00001e20| 20 20 20 20 20 6e 65 77 | 70 6f 73 5b 64 65 70 74 | new|pos[dept|
|00001e30| 68 5d 20 3d 20 27 30 27 | 20 2b 20 69 3b 0d 20 20 |h] = '0'| + i;. |
|00001e40| 20 20 20 20 69 66 20 28 | 66 6d 74 5b 69 5d 20 3d | if (|fmt[i] =|
|00001e50| 3d 20 27 65 27 20 7c 7c | 20 66 6d 74 5b 69 5d 20 |= 'e' ||| fmt[i] |
|00001e60| 3d 3d 20 27 75 27 29 0d | 09 6e 65 77 20 3d 20 61 |== 'u').|.new = a|
|00001e70| 64 64 5f 74 6f 5f 73 65 | 71 75 65 6e 63 65 20 28 |dd_to_se|quence (|
|00001e80| 58 45 58 50 20 28 70 61 | 74 74 65 72 6e 2c 20 69 |XEXP (pa|ttern, i|
|00001e90| 29 2c 20 6e 65 77 2c 20 | 6e 65 77 70 6f 73 29 3b |), new, |newpos);|
|00001ea0| 0d 20 20 20 20 20 20 65 | 6c 73 65 20 69 66 20 28 |. e|lse if (|
|00001eb0| 66 6d 74 5b 69 5d 20 3d | 3d 20 27 69 27 20 26 26 |fmt[i] =|= 'i' &&|
|00001ec0| 20 69 20 3d 3d 20 30 29 | 0d 09 7b 0d 09 20 20 74 | i == 0)|..{.. t|
|00001ed0| 68 69 73 2d 3e 74 65 73 | 74 5f 65 6c 74 5f 7a 65 |his->tes|t_elt_ze|
|00001ee0| 72 6f 5f 69 6e 74 20 3d | 20 31 3b 0d 09 20 20 74 |ro_int =| 1;.. t|
|00001ef0| 68 69 73 2d 3e 65 6c 74 | 5f 7a 65 72 6f 5f 69 6e |his->elt|_zero_in|
|00001f00| 74 20 3d 20 58 49 4e 54 | 20 28 70 61 74 74 65 72 |t = XINT| (patter|
|00001f10| 6e 2c 20 69 29 3b 0d 09 | 7d 0d 20 20 20 20 20 20 |n, i);..|}. |
|00001f20| 65 6c 73 65 20 69 66 20 | 28 66 6d 74 5b 69 5d 20 |else if |(fmt[i] |
|00001f30| 3d 3d 20 27 69 27 20 26 | 26 20 69 20 3d 3d 20 31 |== 'i' &|& i == 1|
|00001f40| 29 0d 09 7b 0d 09 20 20 | 74 68 69 73 2d 3e 74 65 |)..{.. |this->te|
|00001f50| 73 74 5f 65 6c 74 5f 6f | 6e 65 5f 69 6e 74 20 3d |st_elt_o|ne_int =|
|00001f60| 20 31 3b 0d 09 20 20 74 | 68 69 73 2d 3e 65 6c 74 | 1;.. t|his->elt|
|00001f70| 5f 6f 6e 65 5f 69 6e 74 | 20 3d 20 58 49 4e 54 20 |_one_int| = XINT |
|00001f80| 28 70 61 74 74 65 72 6e | 2c 20 69 29 3b 0d 09 7d |(pattern|, i);..}|
|00001f90| 0d 20 20 20 20 20 20 65 | 6c 73 65 20 69 66 20 28 |. e|lse if (|
|00001fa0| 66 6d 74 5b 69 5d 20 3d | 3d 20 27 45 27 29 0d 09 |fmt[i] =|= 'E')..|
|00001fb0| 7b 0d 09 20 20 72 65 67 | 69 73 74 65 72 20 69 6e |{.. reg|ister in|
|00001fc0| 74 20 6a 3b 0d 09 20 20 | 2f 2a 20 57 65 20 64 6f |t j;.. |/* We do|
|00001fd0| 20 6e 6f 74 20 68 61 6e | 64 6c 65 20 61 20 76 65 | not han|dle a ve|
|00001fe0| 63 74 6f 72 20 61 70 70 | 65 61 72 69 6e 67 20 61 |ctor app|earing a|
|00001ff0| 73 20 6f 74 68 65 72 20 | 74 68 61 6e 0d 09 20 20 |s other |than.. |
|00002000| 20 20 20 74 68 65 20 66 | 69 72 73 74 20 69 74 65 | the f|irst ite|
|00002010| 6d 2c 20 6a 75 73 74 20 | 62 65 63 61 75 73 65 20 |m, just |because |
|00002020| 6e 6f 74 68 69 6e 67 20 | 75 73 65 73 20 74 68 65 |nothing |uses the|
|00002030| 6d 0d 09 20 20 20 20 20 | 61 6e 64 20 62 79 20 68 |m.. |and by h|
|00002040| 61 6e 64 6c 69 6e 67 20 | 6f 6e 6c 79 20 74 68 65 |andling |only the|
|00002050| 20 73 70 65 63 69 61 6c | 20 63 61 73 65 0d 09 20 | special| case.. |
|00002060| 20 20 20 20 77 65 20 63 | 61 6e 20 75 73 65 20 6f | we c|an use o|
|00002070| 6e 65 20 65 6c 65 6d 65 | 6e 74 20 69 6e 20 6e 65 |ne eleme|nt in ne|
|00002080| 77 70 6f 73 20 66 6f 72 | 20 65 69 74 68 65 72 0d |wpos for| either.|
|00002090| 09 20 20 20 20 20 74 68 | 65 20 69 74 65 6d 20 6e |. th|e item n|
|000020a0| 75 6d 62 65 72 20 6f 66 | 20 61 20 73 75 62 65 78 |umber of| a subex|
|000020b0| 70 72 65 73 73 69 6f 6e | 0d 09 20 20 20 20 20 6f |pression|.. o|
|000020c0| 72 20 74 68 65 20 65 6c | 65 6d 65 6e 74 20 6e 75 |r the el|ement nu|
|000020d0| 6d 62 65 72 20 69 6e 20 | 61 20 76 65 63 74 6f 72 |mber in |a vector|
|000020e0| 2e 20 20 2a 2f 0d 09 20 | 20 69 66 20 28 69 20 21 |. */.. | if (i !|
|000020f0| 3d 20 30 29 0d 09 20 20 | 20 20 61 62 6f 72 74 20 |= 0).. | abort |
|00002100| 28 29 3b 0d 09 20 20 74 | 68 69 73 2d 3e 76 65 63 |();.. t|his->vec|
|00002110| 6c 65 6e 20 3d 20 58 56 | 45 43 4c 45 4e 20 28 70 |len = XV|ECLEN (p|
|00002120| 61 74 74 65 72 6e 2c 20 | 69 29 3b 0d 09 20 20 66 |attern, |i);.. f|
|00002130| 6f 72 20 28 6a 20 3d 20 | 30 3b 20 6a 20 3c 20 58 |or (j = |0; j < X|
|00002140| 56 45 43 4c 45 4e 20 28 | 70 61 74 74 65 72 6e 2c |VECLEN (|pattern,|
|00002150| 20 69 29 3b 20 6a 2b 2b | 29 0d 09 20 20 20 20 7b | i); j++|).. {|
|00002160| 0d 09 20 20 20 20 20 20 | 6e 65 77 70 6f 73 5b 64 |.. |newpos[d|
|00002170| 65 70 74 68 5d 20 3d 20 | 27 61 27 20 2b 20 6a 3b |epth] = |'a' + j;|
|00002180| 0d 09 20 20 20 20 20 20 | 6e 65 77 20 3d 20 61 64 |.. |new = ad|
|00002190| 64 5f 74 6f 5f 73 65 71 | 75 65 6e 63 65 20 28 58 |d_to_seq|uence (X|
|000021a0| 56 45 43 45 58 50 20 28 | 70 61 74 74 65 72 6e 2c |VECEXP (|pattern,|
|000021b0| 20 69 2c 20 6a 29 2c 0d | 09 09 09 09 20 20 20 20 | i, j),.|.... |
|000021c0| 20 6e 65 77 2c 20 6e 65 | 77 70 6f 73 29 3b 0d 09 | new, ne|wpos);..|
|000021d0| 20 20 20 20 7d 0d 09 7d | 0d 20 20 20 20 20 20 65 | }..}|. e|
|000021e0| 6c 73 65 20 69 66 20 28 | 66 6d 74 5b 69 5d 20 21 |lse if (|fmt[i] !|
|000021f0| 3d 20 27 30 27 29 0d 09 | 61 62 6f 72 74 20 28 29 |= '0')..|abort ()|
|00002200| 3b 0d 20 20 20 20 7d 0d | 20 20 72 65 74 75 72 6e |;. }.| return|
|00002210| 20 6e 65 77 3b 0d 7d 0d | 0d 2f 2a 20 4d 65 72 67 | new;.}.|./* Merg|
|00002220| 65 20 74 77 6f 20 64 65 | 63 69 73 69 6f 6e 20 74 |e two de|cision t|
|00002230| 72 65 65 73 20 4f 4c 44 | 20 61 6e 64 20 41 44 44 |rees OLD| and ADD|
|00002240| 2c 0d 20 20 20 6d 6f 64 | 69 66 79 69 6e 67 20 4f |,. mod|ifying O|
|00002250| 4c 44 20 64 65 73 74 72 | 75 63 74 69 76 65 6c 79 |LD destr|uctively|
|00002260| 2c 0d 20 20 20 61 6e 64 | 20 72 65 74 75 72 6e 20 |,. and| return |
|00002270| 74 68 65 20 6d 65 72 67 | 65 64 20 74 72 65 65 2e |the merg|ed tree.|
|00002280| 20 20 2a 2f 0d 0d 73 74 | 72 75 63 74 20 64 65 63 | */..st|ruct dec|
|00002290| 69 73 69 6f 6e 20 2a 0d | 6d 65 72 67 65 5f 74 72 |ision *.|merge_tr|
|000022a0| 65 65 73 20 28 6f 6c 64 | 2c 20 61 64 64 29 0d 20 |ees (old|, add). |
|000022b0| 20 20 20 20 72 65 67 69 | 73 74 65 72 20 73 74 72 | regi|ster str|
|000022c0| 75 63 74 20 64 65 63 69 | 73 69 6f 6e 20 2a 6f 6c |uct deci|sion *ol|
|000022d0| 64 2c 20 2a 61 64 64 3b | 0d 7b 0d 20 20 77 68 69 |d, *add;|.{. whi|
|000022e0| 6c 65 20 28 61 64 64 29 | 0d 20 20 20 20 7b 0d 20 |le (add)|. {. |
|000022f0| 20 20 20 20 20 72 65 67 | 69 73 74 65 72 20 73 74 | reg|ister st|
|00002300| 72 75 63 74 20 64 65 63 | 69 73 69 6f 6e 20 2a 6e |ruct dec|ision *n|
|00002310| 65 78 74 20 3d 20 61 64 | 64 2d 3e 6e 65 78 74 3b |ext = ad|d->next;|
|00002320| 0d 20 20 20 20 20 20 61 | 64 64 2d 3e 6e 65 78 74 |. a|dd->next|
|00002330| 20 3d 20 30 3b 0d 20 20 | 20 20 20 20 69 66 20 28 | = 0;. | if (|
|00002340| 21 74 72 79 5f 6d 65 72 | 67 65 5f 31 20 28 6f 6c |!try_mer|ge_1 (ol|
|00002350| 64 2c 20 61 64 64 29 29 | 0d 09 6f 6c 64 20 3d 20 |d, add))|..old = |
|00002360| 74 72 79 5f 6d 65 72 67 | 65 5f 32 20 28 6f 6c 64 |try_merg|e_2 (old|
|00002370| 2c 20 61 64 64 29 3b 0d | 20 20 20 20 20 20 61 64 |, add);.| ad|
|00002380| 64 20 3d 20 6e 65 78 74 | 3b 0d 20 20 20 20 7d 0d |d = next|;. }.|
|00002390| 20 20 72 65 74 75 72 6e | 20 6f 6c 64 3b 0d 7d 0d | return| old;.}.|
|000023a0| 0d 2f 2a 20 4d 65 72 67 | 65 20 41 44 44 20 69 6e |./* Merg|e ADD in|
|000023b0| 74 6f 20 74 68 65 20 6e | 65 78 74 2d 63 68 61 69 |to the n|ext-chai|
|000023c0| 6e 20 73 74 61 72 74 69 | 6e 67 20 77 69 74 68 20 |n starti|ng with |
|000023d0| 4f 4c 44 0d 20 20 20 6f | 6e 6c 79 20 69 66 20 69 |OLD. o|nly if i|
|000023e0| 74 20 6f 76 65 72 6c 61 | 70 73 20 61 20 63 6f 6e |t overla|ps a con|
|000023f0| 64 69 74 69 6f 6e 20 61 | 6c 72 65 61 64 79 20 74 |dition a|lready t|
|00002400| 65 73 74 65 64 20 69 6e | 20 4f 4c 44 2e 0d 20 20 |ested in| OLD.. |
|00002410| 20 52 65 74 75 72 6e 73 | 20 31 20 69 66 20 73 75 | Returns| 1 if su|
|00002420| 63 63 65 73 73 66 75 6c | 20 28 4f 4c 44 20 69 73 |ccessful| (OLD is|
|00002430| 20 6d 6f 64 69 66 69 65 | 64 29 2c 0d 20 20 20 30 | modifie|d),. 0|
|00002440| 20 69 66 20 6e 6f 74 68 | 69 6e 67 20 68 61 73 20 | if noth|ing has |
|00002450| 62 65 65 6e 20 64 6f 6e | 65 2e 20 20 2a 2f 0d 0d |been don|e. */..|
|00002460| 69 6e 74 0d 74 72 79 5f | 6d 65 72 67 65 5f 31 20 |int.try_|merge_1 |
|00002470| 28 6f 6c 64 2c 20 61 64 | 64 29 0d 20 20 20 20 20 |(old, ad|d). |
|00002480| 72 65 67 69 73 74 65 72 | 20 73 74 72 75 63 74 20 |register| struct |
|00002490| 64 65 63 69 73 69 6f 6e | 20 2a 6f 6c 64 2c 20 2a |decision| *old, *|
|000024a0| 61 64 64 3b 0d 7b 0d 20 | 20 77 68 69 6c 65 20 28 |add;.{. | while (|
|000024b0| 6f 6c 64 29 0d 20 20 20 | 20 7b 0d 20 20 20 20 20 |old). | {. |
|000024c0| 20 69 66 20 28 28 6f 6c | 64 2d 3e 70 6f 73 69 74 | if ((ol|d->posit|
|000024d0| 69 6f 6e 20 3d 3d 20 61 | 64 64 2d 3e 70 6f 73 69 |ion == a|dd->posi|
|000024e0| 74 69 6f 6e 0d 09 20 20 | 20 7c 7c 20 28 6f 6c 64 |tion.. | || (old|
|000024f0| 2d 3e 70 6f 73 69 74 69 | 6f 6e 20 26 26 20 61 64 |->positi|on && ad|
|00002500| 64 2d 3e 70 6f 73 69 74 | 69 6f 6e 0d 09 20 20 20 |d->posit|ion.. |
|00002510| 20 20 20 20 26 26 20 21 | 73 74 72 63 6d 70 20 28 | && !|strcmp (|
|00002520| 6f 6c 64 2d 3e 70 6f 73 | 69 74 69 6f 6e 2c 20 61 |old->pos|ition, a|
|00002530| 64 64 2d 3e 70 6f 73 69 | 74 69 6f 6e 29 29 29 0d |dd->posi|tion))).|
|00002540| 09 20 20 26 26 20 28 6f | 6c 64 2d 3e 74 65 73 74 |. && (o|ld->test|
|00002550| 73 20 3d 3d 20 61 64 64 | 2d 3e 74 65 73 74 73 0d |s == add|->tests.|
|00002560| 09 20 20 20 20 20 20 7c | 7c 20 28 6f 6c 64 2d 3e |. ||| (old->|
|00002570| 74 65 73 74 73 20 26 26 | 20 61 64 64 2d 3e 74 65 |tests &&| add->te|
|00002580| 73 74 73 20 26 26 20 21 | 73 74 72 63 6d 70 20 28 |sts && !|strcmp (|
|00002590| 6f 6c 64 2d 3e 74 65 73 | 74 73 2c 20 61 64 64 2d |old->tes|ts, add-|
|000025a0| 3e 74 65 73 74 73 29 29 | 29 0d 09 20 20 26 26 20 |>tests))|).. && |
|000025b0| 28 6f 6c 64 2d 3e 63 5f | 74 65 73 74 20 3d 3d 20 |(old->c_|test == |
|000025c0| 61 64 64 2d 3e 63 5f 74 | 65 73 74 0d 09 20 20 20 |add->c_t|est.. |
|000025d0| 20 20 20 7c 7c 20 28 6f | 6c 64 2d 3e 63 5f 74 65 | || (o|ld->c_te|
|000025e0| 73 74 20 26 26 20 61 64 | 64 2d 3e 63 5f 74 65 73 |st && ad|d->c_tes|
|000025f0| 74 20 26 26 20 21 73 74 | 72 63 6d 70 20 28 6f 6c |t && !st|rcmp (ol|
|00002600| 64 2d 3e 63 5f 74 65 73 | 74 2c 20 61 64 64 2d 3e |d->c_tes|t, add->|
|00002610| 63 5f 74 65 73 74 29 29 | 29 0d 09 20 20 26 26 20 |c_test))|).. && |
|00002620| 6f 6c 64 2d 3e 74 65 73 | 74 5f 65 6c 74 5f 7a 65 |old->tes|t_elt_ze|
|00002630| 72 6f 5f 69 6e 74 20 3d | 3d 20 61 64 64 2d 3e 74 |ro_int =|= add->t|
|00002640| 65 73 74 5f 65 6c 74 5f | 7a 65 72 6f 5f 69 6e 74 |est_elt_|zero_int|
|00002650| 0d 09 20 20 26 26 20 6f | 6c 64 2d 3e 65 6c 74 5f |.. && o|ld->elt_|
|00002660| 7a 65 72 6f 5f 69 6e 74 | 20 3d 3d 20 61 64 64 2d |zero_int| == add-|
|00002670| 3e 65 6c 74 5f 7a 65 72 | 6f 5f 69 6e 74 0d 09 20 |>elt_zer|o_int.. |
|00002680| 20 26 26 20 6f 6c 64 2d | 3e 74 65 73 74 5f 65 6c | && old-|>test_el|
|00002690| 74 5f 6f 6e 65 5f 69 6e | 74 20 3d 3d 20 61 64 64 |t_one_in|t == add|
|000026a0| 2d 3e 74 65 73 74 5f 65 | 6c 74 5f 6f 6e 65 5f 69 |->test_e|lt_one_i|
|000026b0| 6e 74 0d 09 20 20 26 26 | 20 6f 6c 64 2d 3e 65 6c |nt.. &&| old->el|
|000026c0| 74 5f 6f 6e 65 5f 69 6e | 74 20 3d 3d 20 61 64 64 |t_one_in|t == add|
|000026d0| 2d 3e 65 6c 74 5f 6f 6e | 65 5f 69 6e 74 0d 09 20 |->elt_on|e_int.. |
|000026e0| 20 26 26 20 6f 6c 64 2d | 3e 76 65 63 6c 65 6e 20 | && old-|>veclen |
|000026f0| 3d 3d 20 61 64 64 2d 3e | 76 65 63 6c 65 6e 0d 09 |== add->|veclen..|
|00002700| 20 20 26 26 20 6f 6c 64 | 2d 3e 64 75 70 6e 6f 20 | && old|->dupno |
|00002710| 3d 3d 20 61 64 64 2d 3e | 64 75 70 6e 6f 0d 09 20 |== add->|dupno.. |
|00002720| 20 26 26 20 6f 6c 64 2d | 3e 6f 70 6e 6f 20 3d 3d | && old-|>opno ==|
|00002730| 20 61 64 64 2d 3e 6f 70 | 6e 6f 0d 09 20 20 26 26 | add->op|no.. &&|
|00002740| 20 28 6f 6c 64 2d 3e 74 | 65 73 74 73 20 3d 3d 20 | (old->t|ests == |
|00002750| 30 0d 09 20 20 20 20 20 | 20 7c 7c 20 28 61 64 64 |0.. | || (add|
|00002760| 2d 3e 65 6e 66 6f 72 63 | 65 5f 6d 6f 64 65 20 3f |->enforc|e_mode ?|
|00002770| 20 6e 6f 5f 73 61 6d 65 | 5f 6d 6f 64 65 20 28 6f | no_same|_mode (o|
|00002780| 6c 64 29 20 3a 20 6f 6c | 64 2d 3e 6e 65 78 74 20 |ld) : ol|d->next |
|00002790| 3d 3d 20 30 29 29 0d 09 | 20 20 26 26 20 6f 6c 64 |== 0))..| && old|
|000027a0| 2d 3e 63 6f 64 65 20 3d | 3d 20 61 64 64 2d 3e 63 |->code =|= add->c|
|000027b0| 6f 64 65 0d 09 20 20 26 | 26 20 6f 6c 64 2d 3e 6d |ode.. &|& old->m|
|000027c0| 6f 64 65 20 3d 3d 20 61 | 64 64 2d 3e 6d 6f 64 65 |ode == a|dd->mode|
|000027d0| 29 0d 09 7b 0d 09 20 20 | 6f 6c 64 2d 3e 73 75 63 |)..{.. |old->suc|
|000027e0| 63 65 73 73 20 3d 20 6d | 65 72 67 65 5f 74 72 65 |cess = m|erge_tre|
|000027f0| 65 73 20 28 6f 6c 64 2d | 3e 73 75 63 63 65 73 73 |es (old-|>success|
|00002800| 2c 20 61 64 64 2d 3e 73 | 75 63 63 65 73 73 29 3b |, add->s|uccess);|
|00002810| 0d 09 20 20 69 66 20 28 | 6f 6c 64 2d 3e 69 6e 73 |.. if (|old->ins|
|00002820| 6e 5f 63 6f 64 65 5f 6e | 75 6d 62 65 72 20 3e 3d |n_code_n|umber >=|
|00002830| 20 30 20 26 26 20 61 64 | 64 2d 3e 69 6e 73 6e 5f | 0 && ad|d->insn_|
|00002840| 63 6f 64 65 5f 6e 75 6d | 62 65 72 20 3e 3d 20 30 |code_num|ber >= 0|
|00002850| 29 0d 09 20 20 20 20 66 | 61 74 61 6c 20 28 22 54 |).. f|atal ("T|
|00002860| 77 6f 20 61 63 74 69 6f | 6e 73 20 61 74 20 6f 6e |wo actio|ns at on|
|00002870| 65 20 70 6f 69 6e 74 20 | 69 6e 20 74 72 65 65 2e |e point |in tree.|
|00002880| 22 29 3b 0d 09 20 20 69 | 66 20 28 6f 6c 64 2d 3e |");.. i|f (old->|
|00002890| 69 6e 73 6e 5f 63 6f 64 | 65 5f 6e 75 6d 62 65 72 |insn_cod|e_number|
|000028a0| 20 3d 3d 20 2d 31 29 0d | 09 20 20 20 20 6f 6c 64 | == -1).|. old|
|000028b0| 2d 3e 69 6e 73 6e 5f 63 | 6f 64 65 5f 6e 75 6d 62 |->insn_c|ode_numb|
|000028c0| 65 72 20 3d 20 61 64 64 | 2d 3e 69 6e 73 6e 5f 63 |er = add|->insn_c|
|000028d0| 6f 64 65 5f 6e 75 6d 62 | 65 72 3b 0d 09 20 20 72 |ode_numb|er;.. r|
|000028e0| 65 74 75 72 6e 20 31 3b | 0d 09 7d 0d 20 20 20 20 |eturn 1;|..}. |
|000028f0| 20 20 6f 6c 64 20 3d 20 | 6f 6c 64 2d 3e 6e 65 78 | old = |old->nex|
|00002900| 74 3b 0d 20 20 20 20 7d | 0d 20 20 72 65 74 75 72 |t;. }|. retur|
|00002910| 6e 20 30 3b 0d 7d 0d 0d | 2f 2a 20 4d 65 72 67 65 |n 0;.}..|/* Merge|
|00002920| 20 41 44 44 20 69 6e 74 | 6f 20 74 68 65 20 6e 65 | ADD int|o the ne|
|00002930| 78 74 2d 63 68 61 69 6e | 20 74 68 61 74 20 73 74 |xt-chain| that st|
|00002940| 61 72 74 73 20 77 69 74 | 68 20 4f 4c 44 2c 0d 20 |arts wit|h OLD,. |
|00002950| 20 20 70 72 65 66 65 72 | 61 62 6c 79 20 61 66 74 | prefer|ably aft|
|00002960| 65 72 20 73 6f 6d 65 74 | 68 69 6e 67 20 74 68 61 |er somet|hing tha|
|00002970| 74 20 74 65 73 74 73 20 | 74 68 65 20 73 61 6d 65 |t tests |the same|
|00002980| 20 70 6c 61 63 65 0d 20 | 20 20 74 68 61 74 20 41 | place. | that A|
|00002990| 44 44 20 64 6f 65 73 2e | 0d 20 20 20 54 68 65 20 |DD does.|. The |
|000029a0| 6e 65 78 74 2d 63 68 61 | 69 6e 20 6f 66 20 41 44 |next-cha|in of AD|
|000029b0| 44 20 69 74 73 65 6c 66 | 20 69 73 20 69 67 6e 6f |D itself| is igno|
|000029c0| 72 65 64 2c 20 61 6e 64 | 20 69 74 20 69 73 20 73 |red, and| it is s|
|000029d0| 65 74 0d 20 20 20 75 70 | 20 66 6f 72 20 65 6e 74 |et. up| for ent|
|000029e0| 65 72 69 6e 67 20 41 44 | 44 20 69 6e 74 6f 20 74 |ering AD|D into t|
|000029f0| 68 65 20 6e 65 77 20 63 | 68 61 69 6e 2e 0d 20 20 |he new c|hain.. |
|00002a00| 20 52 65 74 75 72 6e 73 | 20 74 68 65 20 6e 65 77 | Returns| the new|
|00002a10| 20 63 68 61 69 6e 2e 20 | 20 2a 2f 0d 0d 73 74 72 | chain. | */..str|
|00002a20| 75 63 74 20 64 65 63 69 | 73 69 6f 6e 20 2a 0d 74 |uct deci|sion *.t|
|00002a30| 72 79 5f 6d 65 72 67 65 | 5f 32 20 28 6f 6c 64 2c |ry_merge|_2 (old,|
|00002a40| 20 61 64 64 29 0d 20 20 | 20 20 20 73 74 72 75 63 | add). | struc|
|00002a50| 74 20 64 65 63 69 73 69 | 6f 6e 20 2a 6f 6c 64 2c |t decisi|on *old,|
|00002a60| 20 2a 61 64 64 3b 0d 7b | 0d 20 20 72 65 67 69 73 | *add;.{|. regis|
|00002a70| 74 65 72 20 73 74 72 75 | 63 74 20 64 65 63 69 73 |ter stru|ct decis|
|00002a80| 69 6f 6e 20 2a 70 3b 0d | 20 20 73 74 72 75 63 74 |ion *p;.| struct|
|00002a90| 20 64 65 63 69 73 69 6f | 6e 20 2a 6c 61 73 74 20 | decisio|n *last |
|00002aa0| 3d 20 30 3b 0d 20 20 73 | 74 72 75 63 74 20 64 65 |= 0;. s|truct de|
|00002ab0| 63 69 73 69 6f 6e 20 2a | 6c 61 73 74 5f 73 61 6d |cision *|last_sam|
|00002ac0| 65 5f 70 6c 61 63 65 20 | 3d 20 30 3b 0d 0d 20 20 |e_place |= 0;.. |
|00002ad0| 2f 2a 20 50 75 74 20 74 | 68 69 73 20 69 6e 20 61 |/* Put t|his in a|
|00002ae0| 66 74 65 72 20 74 68 65 | 20 6f 74 68 65 72 73 20 |fter the| others |
|00002af0| 74 68 61 74 20 74 65 73 | 74 20 74 68 65 20 73 61 |that tes|t the sa|
|00002b00| 6d 65 20 70 6c 61 63 65 | 2c 0d 20 20 20 20 20 69 |me place|,. i|
|00002b10| 66 20 74 68 65 72 65 20 | 61 72 65 20 61 6e 79 2e |f there |are any.|
|00002b20| 20 20 49 66 20 6e 6f 74 | 2c 20 66 69 6e 64 20 74 | If not|, find t|
|00002b30| 68 65 20 6c 61 73 74 20 | 63 68 61 69 6e 20 65 6c |he last |chain el|
|00002b40| 65 6d 65 6e 74 0d 20 20 | 20 20 20 61 6e 64 20 69 |ement. | and i|
|00002b50| 6e 73 65 72 74 20 74 68 | 65 72 65 2e 0d 0d 20 20 |nsert th|ere... |
|00002b60| 20 20 20 4f 6e 65 20 6d | 6f 64 69 66 69 63 61 74 | One m|odificat|
|00002b70| 69 6f 6e 3a 20 69 66 20 | 74 68 69 73 20 6f 6e 65 |ion: if |this one|
|00002b80| 20 69 73 20 4e 4f 54 20 | 61 20 4d 41 54 43 48 5f | is NOT |a MATCH_|
|00002b90| 4f 50 45 52 41 4e 44 2c | 0d 20 20 20 20 20 70 75 |OPERAND,|. pu|
|00002ba0| 74 20 69 74 20 62 65 66 | 6f 72 65 20 61 6e 79 20 |t it bef|ore any |
|00002bb0| 4d 41 54 43 48 5f 4f 50 | 45 52 41 4e 44 53 20 74 |MATCH_OP|ERANDS t|
|00002bc0| 68 61 74 20 74 65 73 74 | 20 74 68 65 20 73 61 6d |hat test| the sam|
|00002bd0| 65 20 70 6c 61 63 65 2e | 0d 0d 20 20 20 20 20 41 |e place.|.. A|
|00002be0| 6e 6f 74 68 65 72 3a 20 | 69 66 20 65 6e 66 6f 72 |nother: |if enfor|
|00002bf0| 63 65 5f 6d 6f 64 65 20 | 28 69 2e 65 2e 20 74 68 |ce_mode |(i.e. th|
|00002c00| 69 73 20 69 73 20 66 69 | 72 73 74 20 6f 70 65 72 |is is fi|rst oper|
|00002c10| 61 6e 64 20 6f 66 20 61 | 20 53 45 54 29 2c 0d 20 |and of a| SET),. |
|00002c20| 20 20 20 20 70 75 74 20 | 74 68 69 73 20 61 66 74 | put |this aft|
|00002c30| 65 72 20 74 68 65 20 6c | 61 73 74 20 74 68 69 6e |er the l|ast thin|
|00002c40| 67 20 74 68 61 74 20 74 | 65 73 74 73 20 74 68 65 |g that t|ests the|
|00002c50| 20 73 61 6d 65 20 70 6c | 61 63 65 20 66 6f 72 0d | same pl|ace for.|
|00002c60| 20 20 20 20 20 74 68 65 | 20 73 61 6d 65 20 6d 6f | the| same mo|
|00002c70| 64 65 2e 20 20 2a 2f 0d | 0d 20 20 69 6e 74 20 6f |de. */.|. int o|
|00002c80| 70 65 72 61 6e 64 20 3d | 20 30 20 21 3d 20 61 64 |perand =| 0 != ad|
|00002c90| 64 2d 3e 74 65 73 74 73 | 3b 0d 0d 20 20 66 6f 72 |d->tests|;.. for|
|00002ca0| 20 28 70 20 3d 20 6f 6c | 64 3b 20 70 3b 20 70 20 | (p = ol|d; p; p |
|00002cb0| 3d 20 70 2d 3e 6e 65 78 | 74 29 0d 20 20 20 20 7b |= p->nex|t). {|
|00002cc0| 0d 20 20 20 20 20 20 69 | 66 20 28 70 2d 3e 70 6f |. i|f (p->po|
|00002cd0| 73 69 74 69 6f 6e 20 3d | 3d 20 61 64 64 2d 3e 70 |sition =|= add->p|
|00002ce0| 6f 73 69 74 69 6f 6e 0d | 09 20 20 7c 7c 20 28 70 |osition.|. || (p|
|00002cf0| 2d 3e 70 6f 73 69 74 69 | 6f 6e 20 26 26 20 61 64 |->positi|on && ad|
|00002d00| 64 2d 3e 70 6f 73 69 74 | 69 6f 6e 0d 09 20 20 20 |d->posit|ion.. |
|00002d10| 20 20 20 26 26 20 21 73 | 74 72 63 6d 70 20 28 70 | && !s|trcmp (p|
|00002d20| 2d 3e 70 6f 73 69 74 69 | 6f 6e 2c 20 61 64 64 2d |->positi|on, add-|
|00002d30| 3e 70 6f 73 69 74 69 6f | 6e 29 29 29 0d 09 7b 0d |>positio|n)))..{.|
|00002d40| 09 20 20 6c 61 73 74 5f | 73 61 6d 65 5f 70 6c 61 |. last_|same_pla|
|00002d50| 63 65 20 3d 20 70 3b 0d | 09 20 20 2f 2a 20 49 66 |ce = p;.|. /* If|
|00002d60| 20 65 6e 66 6f 72 63 65 | 5f 6d 6f 64 65 2c 20 73 | enforce|_mode, s|
|00002d70| 65 67 72 65 67 61 74 65 | 20 74 68 65 20 6d 6f 64 |egregate| the mod|
|00002d80| 65 73 20 69 6e 20 6e 75 | 6d 65 72 69 63 61 6c 20 |es in nu|merical |
|00002d90| 6f 72 64 65 72 2e 20 20 | 2a 2f 0d 09 20 20 69 66 |order. |*/.. if|
|00002da0| 20 28 70 2d 3e 65 6e 66 | 6f 72 63 65 5f 6d 6f 64 | (p->enf|orce_mod|
|00002db0| 65 20 26 26 20 28 69 6e | 74 29 20 61 64 64 2d 3e |e && (in|t) add->|
|00002dc0| 6d 6f 64 65 20 3c 20 28 | 69 6e 74 29 20 70 2d 3e |mode < (|int) p->|
|00002dd0| 6d 6f 64 65 29 0d 09 20 | 20 20 20 62 72 65 61 6b |mode).. | break|
|00002de0| 3b 0d 23 69 66 20 30 0d | 09 20 20 2f 2a 20 4b 65 |;.#if 0.|. /* Ke|
|00002df0| 65 70 20 65 78 70 6c 69 | 63 69 74 20 64 65 63 6f |ep expli|cit deco|
|00002e00| 6d 70 6f 73 69 74 69 6f | 6e 73 20 62 65 66 6f 72 |mpositio|ns befor|
|00002e10| 65 20 74 68 6f 73 65 20 | 74 68 61 74 20 74 65 73 |e those |that tes|
|00002e20| 74 20 70 72 65 64 69 63 | 61 74 65 73 2e 0d 09 20 |t predic|ates... |
|00002e30| 20 20 20 20 49 66 20 65 | 6e 66 6f 72 63 65 5f 6d | If e|nforce_m|
|00002e40| 6f 64 65 2c 20 64 6f 20 | 74 68 69 73 20 73 65 70 |ode, do |this sep|
|00002e50| 61 72 61 74 65 6c 79 20 | 77 69 74 68 69 6e 20 65 |arately |within e|
|00002e60| 61 63 68 20 6d 6f 64 65 | 2e 20 20 2a 2f 0d 09 20 |ach mode|. */.. |
|00002e70| 20 69 66 20 28 21 20 70 | 2d 3e 65 6e 66 6f 72 63 | if (! p|->enforc|
|00002e80| 65 5f 6d 6f 64 65 20 7c | 7c 20 70 2d 3e 6d 6f 64 |e_mode ||| p->mod|
|00002e90| 65 20 3d 3d 20 61 64 64 | 2d 3e 6d 6f 64 65 29 0d |e == add|->mode).|
|00002ea0| 09 20 20 20 20 69 66 20 | 28 21 6f 70 65 72 61 6e |. if |(!operan|
|00002eb0| 64 20 26 26 20 70 2d 3e | 74 65 73 74 73 29 0d 09 |d && p->|tests)..|
|00002ec0| 20 20 20 20 20 20 62 72 | 65 61 6b 3b 0d 23 65 6e | br|eak;.#en|
|00002ed0| 64 69 66 0d 09 7d 0d 20 | 20 20 20 20 20 2f 2a 20 |dif..}. | /* |
|00002ee0| 49 66 20 74 68 69 73 20 | 69 73 20 70 61 73 74 20 |If this |is past |
|00002ef0| 74 68 65 20 65 6e 64 20 | 6f 66 20 74 68 65 20 64 |the end |of the d|
|00002f00| 65 63 69 73 69 6f 6e 73 | 20 61 74 20 74 68 65 20 |ecisions| at the |
|00002f10| 73 61 6d 65 20 70 6c 61 | 63 65 20 61 73 20 41 44 |same pla|ce as AD|
|00002f20| 44 2c 0d 09 20 73 74 6f | 70 20 6c 6f 6f 6b 69 6e |D,.. sto|p lookin|
|00002f30| 67 20 6e 6f 77 3b 20 61 | 64 64 20 41 44 44 20 62 |g now; a|dd ADD b|
|00002f40| 65 66 6f 72 65 20 68 65 | 72 65 2e 20 20 2a 2f 0d |efore he|re. */.|
|00002f50| 20 20 20 20 20 20 65 6c | 73 65 20 69 66 20 28 6c | el|se if (l|
|00002f60| 61 73 74 5f 73 61 6d 65 | 5f 70 6c 61 63 65 29 0d |ast_same|_place).|
|00002f70| 09 62 72 65 61 6b 3b 0d | 20 20 20 20 20 20 6c 61 |.break;.| la|
|00002f80| 73 74 20 3d 20 70 3b 0d | 20 20 20 20 7d 0d 0d 20 |st = p;.| }.. |
|00002f90| 20 2f 2a 20 49 6e 73 65 | 72 74 20 62 65 66 6f 72 | /* Inse|rt befor|
|00002fa0| 65 20 50 2c 20 77 68 69 | 63 68 20 6d 65 61 6e 73 |e P, whi|ch means|
|00002fb0| 20 61 66 74 65 72 20 4c | 41 53 54 2e 20 20 2a 2f | after L|AST. */|
|00002fc0| 0d 0d 20 20 69 66 20 28 | 6c 61 73 74 29 0d 20 20 |.. if (|last). |
|00002fd0| 20 20 7b 0d 20 20 20 20 | 20 20 61 64 64 2d 3e 6e | {. | add->n|
|00002fe0| 65 78 74 20 3d 20 6c 61 | 73 74 2d 3e 6e 65 78 74 |ext = la|st->next|
|00002ff0| 3b 0d 20 20 20 20 20 20 | 6c 61 73 74 2d 3e 6e 65 |;. |last->ne|
|00003000| 78 74 20 3d 20 61 64 64 | 3b 0d 20 20 20 20 20 20 |xt = add|;. |
|00003010| 72 65 74 75 72 6e 20 6f | 6c 64 3b 0d 20 20 20 20 |return o|ld;. |
|00003020| 7d 0d 0d 20 20 61 64 64 | 2d 3e 6e 65 78 74 20 3d |}.. add|->next =|
|00003030| 20 6f 6c 64 3b 0d 20 20 | 72 65 74 75 72 6e 20 61 | old;. |return a|
|00003040| 64 64 3b 0d 7d 0d 0d 69 | 6e 74 0d 6e 6f 5f 73 61 |dd;.}..i|nt.no_sa|
|00003050| 6d 65 5f 6d 6f 64 65 20 | 28 6e 6f 64 65 29 0d 20 |me_mode |(node). |
|00003060| 20 20 20 20 73 74 72 75 | 63 74 20 64 65 63 69 73 | stru|ct decis|
|00003070| 69 6f 6e 20 2a 6e 6f 64 | 65 3b 0d 7b 0d 20 20 72 |ion *nod|e;.{. r|
|00003080| 65 67 69 73 74 65 72 20 | 73 74 72 75 63 74 20 64 |egister |struct d|
|00003090| 65 63 69 73 69 6f 6e 20 | 2a 70 3b 0d 20 20 72 65 |ecision |*p;. re|
|000030a0| 67 69 73 74 65 72 20 65 | 6e 75 6d 20 6d 61 63 68 |gister e|num mach|
|000030b0| 69 6e 65 5f 6d 6f 64 65 | 20 6d 6f 64 65 20 3d 20 |ine_mode| mode = |
|000030c0| 6e 6f 64 65 2d 3e 6d 6f | 64 65 3b 0d 0d 20 20 66 |node->mo|de;.. f|
|000030d0| 6f 72 20 28 70 20 3d 20 | 6e 6f 64 65 2d 3e 6e 65 |or (p = |node->ne|
|000030e0| 78 74 3b 20 70 3b 20 70 | 20 3d 20 70 2d 3e 6e 65 |xt; p; p| = p->ne|
|000030f0| 78 74 29 0d 20 20 20 20 | 69 66 20 28 70 2d 3e 6d |xt). |if (p->m|
|00003100| 6f 64 65 20 3d 3d 20 6d | 6f 64 65 29 0d 20 20 20 |ode == m|ode). |
|00003110| 20 20 20 72 65 74 75 72 | 6e 20 30 3b 0d 0d 20 20 | retur|n 0;.. |
|00003120| 72 65 74 75 72 6e 20 31 | 3b 0d 7d 0d 0c 0d 2f 2a |return 1|;.}.../*|
|00003130| 20 43 6f 75 6e 74 20 74 | 68 65 20 6e 75 6d 62 65 | Count t|he numbe|
|00003140| 72 20 6f 66 20 73 75 62 | 6e 6f 64 65 73 20 6f 66 |r of sub|nodes of|
|00003150| 20 6e 6f 64 65 20 4e 4f | 44 45 2c 20 61 73 73 75 | node NO|DE, assu|
|00003160| 6d 65 64 20 74 6f 20 62 | 65 20 74 68 65 20 73 74 |med to b|e the st|
|00003170| 61 72 74 0d 20 20 20 6f | 66 20 61 20 6e 65 78 74 |art. o|f a next|
|00003180| 2d 63 68 61 69 6e 2e 20 | 20 49 66 20 74 68 65 20 |-chain. | If the |
|00003190| 6e 75 6d 62 65 72 20 69 | 73 20 68 69 67 68 20 65 |number i|s high e|
|000031a0| 6e 6f 75 67 68 2c 20 6d | 61 6b 65 20 4e 4f 44 45 |nough, m|ake NODE|
|000031b0| 20 73 74 61 72 74 0d 20 | 20 20 61 20 73 65 70 61 | start. | a sepa|
|000031c0| 72 61 74 65 20 73 75 62 | 72 6f 75 74 69 6e 65 20 |rate sub|routine |
|000031d0| 69 6e 20 74 68 65 20 43 | 20 63 6f 64 65 20 74 68 |in the C| code th|
|000031e0| 61 74 20 69 73 20 67 65 | 6e 65 72 61 74 65 64 2e |at is ge|nerated.|
|000031f0| 20 20 2a 2f 0d 0d 69 6e | 74 0d 62 72 65 61 6b 5f | */..in|t.break_|
|00003200| 6f 75 74 5f 73 75 62 72 | 6f 75 74 69 6e 65 73 20 |out_subr|outines |
|00003210| 28 6e 6f 64 65 29 0d 20 | 20 20 20 20 73 74 72 75 |(node). | stru|
|00003220| 63 74 20 64 65 63 69 73 | 69 6f 6e 20 2a 6e 6f 64 |ct decis|ion *nod|
|00003230| 65 3b 0d 7b 0d 20 20 69 | 6e 74 20 73 69 7a 65 20 |e;.{. i|nt size |
|00003240| 3d 20 30 3b 0d 20 20 73 | 74 72 75 63 74 20 64 65 |= 0;. s|truct de|
|00003250| 63 69 73 69 6f 6e 20 2a | 73 75 62 3b 0d 20 20 66 |cision *|sub;. f|
|00003260| 6f 72 20 28 73 75 62 20 | 3d 20 6e 6f 64 65 3b 20 |or (sub |= node; |
|00003270| 73 75 62 3b 20 73 75 62 | 20 3d 20 73 75 62 2d 3e |sub; sub| = sub->|
|00003280| 6e 65 78 74 29 0d 20 20 | 20 20 73 69 7a 65 20 2b |next). | size +|
|00003290| 3d 20 31 20 2b 20 62 72 | 65 61 6b 5f 6f 75 74 5f |= 1 + br|eak_out_|
|000032a0| 73 75 62 72 6f 75 74 69 | 6e 65 73 20 28 73 75 62 |subrouti|nes (sub|
|000032b0| 2d 3e 73 75 63 63 65 73 | 73 29 3b 0d 20 20 69 66 |->succes|s);. if|
|000032c0| 20 28 73 69 7a 65 20 3e | 20 53 55 42 52 4f 55 54 | (size >| SUBROUT|
|000032d0| 49 4e 45 5f 54 48 52 45 | 53 48 4f 4c 44 29 0d 20 |INE_THRE|SHOLD). |
|000032e0| 20 20 20 7b 0d 20 20 20 | 20 20 20 6e 6f 64 65 2d | {. | node-|
|000032f0| 3e 73 75 62 72 6f 75 74 | 69 6e 65 5f 6e 75 6d 62 |>subrout|ine_numb|
|00003300| 65 72 20 3d 20 2b 2b 6e | 65 78 74 5f 73 75 62 72 |er = ++n|ext_subr|
|00003310| 6f 75 74 69 6e 65 5f 6e | 75 6d 62 65 72 3b 0d 20 |outine_n|umber;. |
|00003320| 20 20 20 20 20 77 72 69 | 74 65 5f 73 75 62 72 6f | wri|te_subro|
|00003330| 75 74 69 6e 65 20 28 6e | 6f 64 65 29 3b 0d 20 20 |utine (n|ode);. |
|00003340| 20 20 20 20 73 69 7a 65 | 20 3d 20 31 3b 0d 20 20 | size| = 1;. |
|00003350| 20 20 7d 0d 20 20 72 65 | 74 75 72 6e 20 73 69 7a | }. re|turn siz|
|00003360| 65 3b 0d 7d 0d 0d 76 6f | 69 64 0d 77 72 69 74 65 |e;.}..vo|id.write|
|00003370| 5f 73 75 62 72 6f 75 74 | 69 6e 65 20 28 74 72 65 |_subrout|ine (tre|
|00003380| 65 29 0d 20 20 20 20 20 | 73 74 72 75 63 74 20 64 |e). |struct d|
|00003390| 65 63 69 73 69 6f 6e 20 | 2a 74 72 65 65 3b 0d 7b |ecision |*tree;.{|
|000033a0| 0d 20 20 70 72 69 6e 74 | 66 20 28 22 69 6e 74 5c |. print|f ("int\|
|000033b0| 6e 72 65 63 6f 67 5f 25 | 64 20 28 78 30 2c 20 69 |nrecog_%|d (x0, i|
|000033c0| 6e 73 6e 29 5c 6e 20 20 | 20 20 20 72 65 67 69 73 |nsn)\n | regis|
|000033d0| 74 65 72 20 72 74 78 20 | 78 30 3b 5c 6e 20 20 20 |ter rtx |x0;\n |
|000033e0| 20 20 72 74 78 20 69 6e | 73 6e 3b 5c 6e 7b 5c 6e | rtx in|sn;\n{\n|
|000033f0| 22 2c 0d 09 20 20 74 72 | 65 65 2d 3e 73 75 62 72 |",.. tr|ee->subr|
|00003400| 6f 75 74 69 6e 65 5f 6e | 75 6d 62 65 72 29 3b 0d |outine_n|umber);.|
|00003410| 20 20 70 72 69 6e 74 66 | 20 28 22 20 20 72 65 67 | printf| (" reg|
|00003420| 69 73 74 65 72 20 72 74 | 78 20 78 31 2c 20 78 32 |ister rt|x x1, x2|
|00003430| 2c 20 78 33 2c 20 78 34 | 2c 20 78 35 3b 5c 6e 20 |, x3, x4|, x5;\n |
|00003440| 20 72 74 78 20 78 36 2c | 20 78 37 2c 20 78 38 2c | rtx x6,| x7, x8,|
|00003450| 20 78 39 2c 20 78 31 30 | 2c 20 78 31 31 3b 5c 6e | x9, x10|, x11;\n|
|00003460| 22 29 3b 0d 20 20 70 72 | 69 6e 74 66 20 28 22 20 |");. pr|intf (" |
|00003470| 20 69 6e 74 20 74 65 6d | 3b 5c 6e 22 29 3b 0d 20 | int tem|;\n");. |
|00003480| 20 77 72 69 74 65 5f 74 | 72 65 65 20 28 74 72 65 | write_t|ree (tre|
|00003490| 65 2c 20 22 22 2c 20 30 | 2c 20 22 22 2c 20 31 29 |e, "", 0|, "", 1)|
|000034a0| 3b 0d 20 20 70 72 69 6e | 74 66 20 28 22 20 72 65 |;. prin|tf (" re|
|000034b0| 74 30 3a 20 72 65 74 75 | 72 6e 20 2d 31 3b 5c 6e |t0: retu|rn -1;\n|
|000034c0| 7d 5c 6e 5c 6e 22 29 3b | 0d 7d 0d 0c 0d 2f 2a 20 |}\n\n");|.}.../* |
|000034d0| 57 72 69 74 65 20 6f 75 | 74 20 43 20 63 6f 64 65 |Write ou|t C code|
|000034e0| 20 74 6f 20 70 65 72 66 | 6f 72 6d 20 74 68 65 20 | to perf|orm the |
|000034f0| 64 65 63 69 73 69 6f 6e | 73 20 69 6e 20 74 68 65 |decision|s in the|
|00003500| 20 74 72 65 65 2e 20 20 | 2a 2f 0d 0d 76 6f 69 64 | tree. |*/..void|
|00003510| 0d 77 72 69 74 65 5f 74 | 72 65 65 20 28 74 72 65 |.write_t|ree (tre|
|00003520| 65 2c 20 70 72 65 76 70 | 6f 73 2c 20 61 66 74 65 |e, prevp|os, afte|
|00003530| 72 77 61 72 64 2c 20 61 | 66 74 65 72 70 6f 73 2c |rward, a|fterpos,|
|00003540| 20 69 6e 69 74 69 61 6c | 29 0d 20 20 20 20 20 73 | initial|). s|
|00003550| 74 72 75 63 74 20 64 65 | 63 69 73 69 6f 6e 20 2a |truct de|cision *|
|00003560| 74 72 65 65 3b 0d 20 20 | 20 20 20 63 68 61 72 20 |tree;. | char |
|00003570| 2a 70 72 65 76 70 6f 73 | 3b 0d 20 20 20 20 20 69 |*prevpos|;. i|
|00003580| 6e 74 20 61 66 74 65 72 | 77 61 72 64 3b 0d 20 20 |nt after|ward;. |
|00003590| 20 20 20 63 68 61 72 20 | 2a 61 66 74 65 72 70 6f | char |*afterpo|
|000035a0| 73 3b 0d 20 20 20 20 20 | 69 6e 74 20 69 6e 69 74 |s;. |int init|
|000035b0| 69 61 6c 3b 0d 7b 0d 20 | 20 72 65 67 69 73 74 65 |ial;.{. | registe|
|000035c0| 72 20 73 74 72 75 63 74 | 20 64 65 63 69 73 69 6f |r struct| decisio|
|000035d0| 6e 20 2a 70 2c 20 2a 70 | 31 3b 0d 20 20 63 68 61 |n *p, *p|1;. cha|
|000035e0| 72 20 2a 70 6f 73 3b 0d | 20 20 72 65 67 69 73 74 |r *pos;.| regist|
|000035f0| 65 72 20 69 6e 74 20 64 | 65 70 74 68 3b 0d 20 20 |er int d|epth;. |
|00003600| 69 6e 74 20 69 67 6e 6d | 6f 64 65 3b 0d 20 20 65 |int ignm|ode;. e|
|00003610| 6e 75 6d 20 61 6e 6f 6e | 31 20 7b 20 4e 4f 5f 53 |num anon|1 { NO_S|
|00003620| 57 49 54 43 48 2c 20 43 | 4f 44 45 5f 53 57 49 54 |WITCH, C|ODE_SWIT|
|00003630| 43 48 2c 20 4d 4f 44 45 | 5f 53 57 49 54 43 48 20 |CH, MODE|_SWITCH |
|00003640| 7d 20 69 6e 5f 73 77 69 | 74 63 68 20 3d 20 4e 4f |} in_swi|tch = NO|
|00003650| 5f 53 57 49 54 43 48 3b | 0d 20 20 63 68 61 72 20 |_SWITCH;|. char |
|00003660| 6d 6f 64 65 6d 61 70 5b | 4e 55 4d 5f 4d 41 43 48 |modemap[|NUM_MACH|
|00003670| 49 4e 45 5f 4d 4f 44 45 | 53 5d 3b 0d 20 20 63 68 |INE_MODE|S];. ch|
|00003680| 61 72 20 63 6f 64 65 6d | 61 70 5b 4e 55 4d 5f 52 |ar codem|ap[NUM_R|
|00003690| 54 58 5f 43 4f 44 45 5d | 3b 0d 0d 20 20 70 6f 73 |TX_CODE]|;.. pos|
|000036a0| 20 3d 20 70 72 65 76 70 | 6f 73 3b 0d 0d 20 20 69 | = prevp|os;.. i|
|000036b0| 66 20 28 74 72 65 65 2d | 3e 73 75 62 72 6f 75 74 |f (tree-|>subrout|
|000036c0| 69 6e 65 5f 6e 75 6d 62 | 65 72 20 3e 20 30 20 26 |ine_numb|er > 0 &|
|000036d0| 26 20 21 20 69 6e 69 74 | 69 61 6c 29 0d 20 20 20 |& ! init|ial). |
|000036e0| 20 7b 0d 20 20 20 20 20 | 20 70 72 69 6e 74 66 20 | {. | printf |
|000036f0| 28 22 20 4c 25 64 3a 5c | 6e 22 2c 20 74 72 65 65 |(" L%d:\|n", tree|
|00003700| 2d 3e 6e 75 6d 62 65 72 | 29 3b 0d 0d 20 20 20 20 |->number|);.. |
|00003710| 20 20 69 66 20 28 61 66 | 74 65 72 77 61 72 64 29 | if (af|terward)|
|00003720| 0d 09 7b 0d 09 20 20 70 | 72 69 6e 74 66 20 28 22 |..{.. p|rintf ("|
|00003730| 20 20 74 65 6d 20 3d 20 | 72 65 63 6f 67 5f 25 64 | tem = |recog_%d|
|00003740| 20 28 78 30 2c 20 69 6e | 73 6e 29 3b 5c 6e 22 2c | (x0, in|sn);\n",|
|00003750| 0d 09 09 20 20 74 72 65 | 65 2d 3e 73 75 62 72 6f |... tre|e->subro|
|00003760| 75 74 69 6e 65 5f 6e 75 | 6d 62 65 72 29 3b 0d 09 |utine_nu|mber);..|
|00003770| 20 20 70 72 69 6e 74 66 | 20 28 22 20 20 69 66 20 | printf| (" if |
|00003780| 28 74 65 6d 20 3e 3d 20 | 30 29 20 72 65 74 75 72 |(tem >= |0) retur|
|00003790| 6e 20 74 65 6d 3b 5c 6e | 22 29 3b 0d 09 20 20 63 |n tem;\n|");.. c|
|000037a0| 68 61 6e 67 65 5f 73 74 | 61 74 65 20 28 70 6f 73 |hange_st|ate (pos|
|000037b0| 2c 20 61 66 74 65 72 70 | 6f 73 29 3b 0d 09 20 20 |, afterp|os);.. |
|000037c0| 70 72 69 6e 74 66 20 28 | 22 20 20 67 6f 74 6f 20 |printf (|" goto |
|000037d0| 4c 25 64 3b 5c 6e 22 2c | 20 61 66 74 65 72 77 61 |L%d;\n",| afterwa|
|000037e0| 72 64 29 3b 0d 09 7d 0d | 20 20 20 20 20 20 65 6c |rd);..}.| el|
|000037f0| 73 65 0d 09 70 72 69 6e | 74 66 20 28 22 20 20 72 |se..prin|tf (" r|
|00003800| 65 74 75 72 6e 20 72 65 | 63 6f 67 5f 25 64 20 28 |eturn re|cog_%d (|
|00003810| 78 30 2c 20 69 6e 73 6e | 29 3b 5c 6e 22 2c 0d 09 |x0, insn|);\n",..|
|00003820| 09 74 72 65 65 2d 3e 73 | 75 62 72 6f 75 74 69 6e |.tree->s|ubroutin|
|00003830| 65 5f 6e 75 6d 62 65 72 | 29 3b 0d 20 20 20 20 20 |e_number|);. |
|00003840| 20 72 65 74 75 72 6e 3b | 0d 20 20 20 20 7d 0d 0d | return;|. }..|
|00003850| 20 20 74 72 65 65 2d 3e | 6c 61 62 65 6c 5f 6e 65 | tree->|label_ne|
|00003860| 65 64 65 64 20 3d 20 31 | 3b 0d 20 20 66 6f 72 20 |eded = 1|;. for |
|00003870| 28 70 20 3d 20 74 72 65 | 65 3b 20 70 3b 20 70 20 |(p = tre|e; p; p |
|00003880| 3d 20 70 2d 3e 6e 65 78 | 74 29 0d 20 20 20 20 7b |= p->nex|t). {|
|00003890| 0d 20 20 20 20 20 20 2f | 2a 20 46 69 6e 64 20 74 |. /|* Find t|
|000038a0| 68 65 20 6e 65 78 74 20 | 61 6c 74 65 72 6e 61 74 |he next |alternat|
|000038b0| 69 76 65 20 74 6f 20 70 | 0d 09 20 74 68 61 74 20 |ive to p|.. that |
|000038c0| 6d 69 67 68 74 20 62 65 | 20 74 72 75 65 20 77 68 |might be| true wh|
|000038d0| 65 6e 20 70 20 69 73 20 | 74 72 75 65 2e 0d 09 20 |en p is |true... |
|000038e0| 54 65 73 74 20 74 68 61 | 74 20 6f 6e 65 20 6e 65 |Test tha|t one ne|
|000038f0| 78 74 20 69 66 20 70 27 | 73 20 73 75 63 63 65 73 |xt if p'|s succes|
|00003900| 73 6f 72 73 20 66 61 69 | 6c 2e 0d 09 20 4e 6f 74 |sors fai|l... Not|
|00003910| 65 20 74 68 61 74 20 77 | 68 65 6e 20 74 68 65 20 |e that w|hen the |
|00003920| 60 74 65 73 74 73 27 20 | 66 69 65 6c 64 20 69 73 |`tests' |field is|
|00003930| 20 6e 6f 6e 7a 65 72 6f | 0d 09 20 69 74 20 69 73 | nonzero|.. it is|
|00003940| 20 75 70 20 74 6f 20 74 | 68 65 20 73 70 65 63 69 | up to t|he speci|
|00003950| 66 69 65 64 20 74 65 73 | 74 2d 66 75 6e 63 74 69 |fied tes|t-functi|
|00003960| 6f 6e 20 74 6f 20 63 6f | 6d 70 61 72 65 20 6d 61 |on to co|mpare ma|
|00003970| 63 68 69 6e 65 20 6d 6f | 64 65 73 0d 09 20 61 6e |chine mo|des.. an|
|00003980| 64 20 73 6f 6d 65 20 28 | 73 75 63 68 20 61 73 20 |d some (|such as |
|00003990| 67 65 6e 65 72 61 6c 5f | 6f 70 65 72 61 6e 64 29 |general_|operand)|
|000039a0| 20 64 6f 6e 27 74 20 61 | 6c 77 61 79 73 20 64 6f | don't a|lways do|
|000039b0| 20 73 6f 2e 0d 09 20 42 | 75 74 20 77 68 65 6e 20 | so... B|ut when |
|000039c0| 69 6e 73 69 64 65 20 61 | 20 73 77 69 74 63 68 2d |inside a| switch-|
|000039d0| 6f 6e 2d 6d 6f 64 65 73 | 20 77 65 20 69 67 6e 6f |on-modes| we igno|
|000039e0| 72 65 20 74 68 69 73 20 | 61 6e 64 0d 09 20 63 6f |re this |and.. co|
|000039f0| 6e 73 69 64 65 72 20 61 | 6c 6c 20 6d 6f 64 65 73 |nsider a|ll modes|
|00003a00| 20 6d 75 74 75 61 6c 6c | 79 20 65 78 63 6c 75 73 | mutuall|y exclus|
|00003a10| 69 76 65 2e 20 20 2a 2f | 0d 20 20 20 20 20 20 66 |ive. */|. f|
|00003a20| 6f 72 20 28 70 31 20 3d | 20 70 2d 3e 6e 65 78 74 |or (p1 =| p->next|
|00003a30| 3b 20 70 31 3b 20 70 31 | 20 3d 20 70 31 2d 3e 6e |; p1; p1| = p1->n|
|00003a40| 65 78 74 29 0d 09 69 66 | 20 28 28 28 70 2d 3e 63 |ext)..if| (((p->c|
|00003a50| 6f 64 65 20 3d 3d 20 55 | 4e 4b 4e 4f 57 4e 20 7c |ode == U|NKNOWN ||
|00003a60| 7c 20 70 31 2d 3e 63 6f | 64 65 20 3d 3d 20 55 4e || p1->co|de == UN|
|00003a70| 4b 4e 4f 57 4e 20 7c 7c | 20 70 2d 3e 63 6f 64 65 |KNOWN ||| p->code|
|00003a80| 20 3d 3d 20 70 31 2d 3e | 63 6f 64 65 29 0d 09 20 | == p1->|code).. |
|00003a90| 20 20 20 20 26 26 20 28 | 70 2d 3e 6d 6f 64 65 20 | && (|p->mode |
|00003aa0| 3d 3d 20 56 4f 49 44 6d | 6f 64 65 20 7c 7c 20 70 |== VOIDm|ode || p|
|00003ab0| 31 2d 3e 6d 6f 64 65 20 | 3d 3d 20 56 4f 49 44 6d |1->mode |== VOIDm|
|00003ac0| 6f 64 65 0d 09 09 20 7c | 7c 20 70 2d 3e 6d 6f 64 |ode... ||| p->mod|
|00003ad0| 65 20 3d 3d 20 70 31 2d | 3e 6d 6f 64 65 0d 09 09 |e == p1-|>mode...|
|00003ae0| 20 7c 7c 20 28 69 6e 5f | 73 77 69 74 63 68 20 21 | || (in_|switch !|
|00003af0| 3d 20 4d 4f 44 45 5f 53 | 57 49 54 43 48 20 26 26 |= MODE_S|WITCH &&|
|00003b00| 20 28 70 2d 3e 74 65 73 | 74 73 20 7c 7c 20 70 31 | (p->tes|ts || p1|
|00003b10| 2d 3e 74 65 73 74 73 29 | 29 29 29 0d 09 20 20 20 |->tests)|))).. |
|00003b20| 20 7c 7c 20 73 74 72 63 | 6d 70 20 28 70 31 2d 3e | || strc|mp (p1->|
|00003b30| 70 6f 73 69 74 69 6f 6e | 2c 20 70 2d 3e 70 6f 73 |position|, p->pos|
|00003b40| 69 74 69 6f 6e 29 29 0d | 09 20 20 62 72 65 61 6b |ition)).|. break|
|00003b50| 3b 0d 20 20 20 20 20 20 | 70 2d 3e 61 66 74 65 72 |;. |p->after|
|00003b60| 77 61 72 64 20 3d 20 70 | 31 3b 0d 20 20 20 20 20 |ward = p|1;. |
|00003b70| 20 69 66 20 28 70 31 29 | 20 70 31 2d 3e 6c 61 62 | if (p1)| p1->lab|
|00003b80| 65 6c 5f 6e 65 65 64 65 | 64 20 3d 20 31 3b 0d 0d |el_neede|d = 1;..|
|00003b90| 20 20 20 20 20 20 69 66 | 20 28 69 6e 5f 73 77 69 | if| (in_swi|
|00003ba0| 74 63 68 20 3d 3d 20 4d | 4f 44 45 5f 53 57 49 54 |tch == M|ODE_SWIT|
|00003bb0| 43 48 0d 09 20 20 26 26 | 20 28 70 2d 3e 6d 6f 64 |CH.. &&| (p->mod|
|00003bc0| 65 20 3d 3d 20 56 4f 49 | 44 6d 6f 64 65 20 7c 7c |e == VOI|Dmode |||
|00003bd0| 20 28 21 20 70 2d 3e 65 | 6e 66 6f 72 63 65 5f 6d | (! p->e|nforce_m|
|00003be0| 6f 64 65 20 26 26 20 70 | 2d 3e 74 65 73 74 73 20 |ode && p|->tests |
|00003bf0| 21 3d 20 30 29 29 29 0d | 09 7b 0d 09 20 20 69 6e |!= 0))).|.{.. in|
|00003c00| 5f 73 77 69 74 63 68 20 | 3d 20 4e 4f 5f 53 57 49 |_switch |= NO_SWI|
|00003c10| 54 43 48 3b 0d 09 20 20 | 70 72 69 6e 74 66 20 28 |TCH;.. |printf (|
|00003c20| 22 20 20 7d 5c 6e 22 29 | 3b 0d 09 7d 0d 20 20 20 |" }\n")|;..}. |
|00003c30| 20 20 20 69 66 20 28 69 | 6e 5f 73 77 69 74 63 68 | if (i|n_switch|
|00003c40| 20 3d 3d 20 43 4f 44 45 | 5f 53 57 49 54 43 48 20 | == CODE|_SWITCH |
|00003c50| 26 26 20 70 2d 3e 63 6f | 64 65 20 3d 3d 20 55 4e |&& p->co|de == UN|
|00003c60| 4b 4e 4f 57 4e 29 0d 09 | 7b 0d 09 20 20 69 6e 5f |KNOWN)..|{.. in_|
|00003c70| 73 77 69 74 63 68 20 3d | 20 4e 4f 5f 53 57 49 54 |switch =| NO_SWIT|
|00003c80| 43 48 3b 0d 09 20 20 70 | 72 69 6e 74 66 20 28 22 |CH;.. p|rintf ("|
|00003c90| 20 20 7d 5c 6e 22 29 3b | 0d 09 7d 0d 0d 20 20 20 | }\n");|..}.. |
|00003ca0| 20 20 20 69 66 20 28 70 | 2d 3e 6c 61 62 65 6c 5f | if (p|->label_|
|00003cb0| 6e 65 65 64 65 64 29 0d | 09 70 72 69 6e 74 66 20 |needed).|.printf |
|00003cc0| 28 22 20 4c 25 64 3a 5c | 6e 22 2c 20 70 2d 3e 6e |(" L%d:\|n", p->n|
|00003cd0| 75 6d 62 65 72 29 3b 0d | 0d 20 20 20 20 20 20 69 |umber);.|. i|
|00003ce0| 66 20 28 70 2d 3e 73 75 | 63 63 65 73 73 20 3d 3d |f (p->su|ccess ==|
|00003cf0| 20 30 20 26 26 20 70 2d | 3e 69 6e 73 6e 5f 63 6f | 0 && p-|>insn_co|
|00003d00| 64 65 5f 6e 75 6d 62 65 | 72 20 3c 20 30 29 0d 09 |de_numbe|r < 0)..|
|00003d10| 61 62 6f 72 74 20 28 29 | 3b 0d 0d 20 20 20 20 20 |abort ()|;.. |
|00003d20| 20 63 68 61 6e 67 65 5f | 73 74 61 74 65 20 28 70 | change_|state (p|
|00003d30| 6f 73 2c 20 70 2d 3e 70 | 6f 73 69 74 69 6f 6e 29 |os, p->p|osition)|
|00003d40| 3b 0d 20 20 20 20 20 20 | 70 6f 73 20 3d 20 70 2d |;. |pos = p-|
|00003d50| 3e 70 6f 73 69 74 69 6f | 6e 3b 0d 20 20 20 20 20 |>positio|n;. |
|00003d60| 20 64 65 70 74 68 20 3d | 20 73 74 72 6c 65 6e 20 | depth =| strlen |
|00003d70| 28 70 6f 73 29 3b 0d 0d | 20 20 20 20 20 20 69 67 |(pos);..| ig|
|00003d80| 6e 6d 6f 64 65 20 3d 20 | 70 2d 3e 69 67 6e 6d 6f |nmode = |p->ignmo|
|00003d90| 64 65 20 7c 7c 20 70 6f | 73 5b 64 65 70 74 68 20 |de || po|s[depth |
|00003da0| 2d 20 31 5d 20 3d 3d 20 | 27 2a 27 20 7c 7c 20 70 |- 1] == |'*' || p|
|00003db0| 2d 3e 74 65 73 74 73 3b | 0d 0d 20 20 20 20 20 20 |->tests;|.. |
|00003dc0| 69 66 20 28 69 6e 5f 73 | 77 69 74 63 68 20 3d 3d |if (in_s|witch ==|
|00003dd0| 20 4e 4f 5f 53 57 49 54 | 43 48 29 0d 09 7b 0d 09 | NO_SWIT|CH)..{..|
|00003de0| 20 20 2f 2a 20 49 66 20 | 70 20 61 6e 64 20 69 74 | /* If |p and it|
|00003df0| 73 20 61 6c 74 65 72 6e | 61 74 69 76 65 73 20 61 |s altern|atives a|
|00003e00| 6c 6c 20 77 61 6e 74 20 | 74 68 65 20 73 61 6d 65 |ll want |the same|
|00003e10| 20 6d 6f 64 65 2c 0d 09 | 20 20 20 20 20 72 65 6a | mode,..| rej|
|00003e20| 65 63 74 20 61 6c 6c 20 | 6f 74 68 65 72 73 20 61 |ect all |others a|
|00003e30| 74 20 6f 6e 63 65 2c 20 | 66 69 72 73 74 2c 20 74 |t once, |first, t|
|00003e40| 68 65 6e 20 69 67 6e 6f | 72 65 20 74 68 65 20 6d |hen igno|re the m|
|00003e50| 6f 64 65 2e 20 20 2a 2f | 0d 09 20 20 69 66 20 28 |ode. */|.. if (|
|00003e60| 21 69 67 6e 6d 6f 64 65 | 20 26 26 20 70 2d 3e 6d |!ignmode| && p->m|
|00003e70| 6f 64 65 20 21 3d 20 56 | 4f 49 44 6d 6f 64 65 20 |ode != V|OIDmode |
|00003e80| 26 26 20 70 2d 3e 6e 65 | 78 74 20 26 26 20 73 61 |&& p->ne|xt && sa|
|00003e90| 6d 65 5f 6d 6f 64 65 73 | 20 28 70 2c 20 70 2d 3e |me_modes| (p, p->|
|00003ea0| 6d 6f 64 65 29 29 0d 09 | 20 20 20 20 7b 0d 09 20 |mode))..| {.. |
|00003eb0| 20 20 20 20 20 70 72 69 | 6e 74 66 20 28 22 20 20 | pri|ntf (" |
|00003ec0| 69 66 20 28 47 45 54 5f | 4d 4f 44 45 20 28 78 25 |if (GET_|MODE (x%|
|00003ed0| 64 29 20 21 3d 20 25 73 | 6d 6f 64 65 29 5c 6e 22 |d) != %s|mode)\n"|
|00003ee0| 2c 0d 09 09 20 20 20 20 | 20 20 64 65 70 74 68 2c |,... | depth,|
|00003ef0| 20 47 45 54 5f 4d 4f 44 | 45 5f 4e 41 4d 45 20 28 | GET_MOD|E_NAME (|
|00003f00| 70 2d 3e 6d 6f 64 65 29 | 29 3b 0d 09 20 20 20 20 |p->mode)|);.. |
|00003f10| 20 20 69 66 20 28 61 66 | 74 65 72 77 61 72 64 29 | if (af|terward)|
|00003f20| 0d 09 09 7b 0d 09 09 20 | 20 70 72 69 6e 74 66 20 |...{... | printf |
|00003f30| 28 22 20 20 20 20 7b 5c | 6e 20 20 20 20 22 29 3b |(" {\|n ");|
|00003f40| 0d 09 09 20 20 63 68 61 | 6e 67 65 5f 73 74 61 74 |... cha|nge_stat|
|00003f50| 65 20 28 70 6f 73 2c 20 | 61 66 74 65 72 70 6f 73 |e (pos, |afterpos|
|00003f60| 29 3b 0d 09 09 20 20 70 | 72 69 6e 74 66 20 28 22 |);... p|rintf ("|
|00003f70| 20 20 20 20 20 20 67 6f | 74 6f 20 4c 25 64 3b 5c | go|to L%d;\|
|00003f80| 6e 20 20 20 20 7d 5c 6e | 22 2c 20 61 66 74 65 72 |n }\n|", after|
|00003f90| 77 61 72 64 29 3b 0d 09 | 09 7d 0d 09 20 20 20 20 |ward);..|.}.. |
|00003fa0| 20 20 65 6c 73 65 0d 09 | 09 70 72 69 6e 74 66 20 | else..|.printf |
|00003fb0| 28 22 20 20 20 20 67 6f | 74 6f 20 72 65 74 30 3b |(" go|to ret0;|
|00003fc0| 5c 6e 22 29 3b 0d 09 20 | 20 20 20 20 20 63 6c 65 |\n");.. | cle|
|00003fd0| 61 72 5f 6d 6f 64 65 73 | 20 28 70 29 3b 0d 09 20 |ar_modes| (p);.. |
|00003fe0| 20 20 20 20 20 69 67 6e | 6d 6f 64 65 20 3d 20 31 | ign|mode = 1|
|00003ff0| 3b 0d 09 20 20 20 20 7d | 0d 0d 09 20 20 2f 2a 20 |;.. }|... /* |
|00004000| 49 66 20 70 20 61 6e 64 | 20 69 74 73 20 61 6c 74 |If p and| its alt|
|00004010| 65 72 6e 61 74 69 76 65 | 73 20 61 6c 6c 20 77 61 |ernative|s all wa|
|00004020| 6e 74 20 74 68 65 20 73 | 61 6d 65 20 63 6f 64 65 |nt the s|ame code|
|00004030| 2c 0d 09 20 20 20 20 20 | 72 65 6a 65 63 74 20 61 |,.. |reject a|
|00004040| 6c 6c 20 6f 74 68 65 72 | 73 20 61 74 20 6f 6e 63 |ll other|s at onc|
|00004050| 65 2c 20 66 69 72 73 74 | 2c 20 74 68 65 6e 20 69 |e, first|, then i|
|00004060| 67 6e 6f 72 65 20 74 68 | 65 20 63 6f 64 65 2e 20 |gnore th|e code. |
|00004070| 20 2a 2f 0d 09 20 20 69 | 66 20 28 70 2d 3e 63 6f | */.. i|f (p->co|
|00004080| 64 65 20 21 3d 20 55 4e | 4b 4e 4f 57 4e 20 26 26 |de != UN|KNOWN &&|
|00004090| 20 70 2d 3e 6e 65 78 74 | 20 26 26 20 73 61 6d 65 | p->next| && same|
|000040a0| 5f 63 6f 64 65 73 20 28 | 70 2c 20 70 2d 3e 63 6f |_codes (|p, p->co|
|000040b0| 64 65 29 29 0d 09 20 20 | 20 20 7b 0d 09 20 20 20 |de)).. | {.. |
|000040c0| 20 20 20 70 72 69 6e 74 | 66 20 28 22 20 20 69 66 | print|f (" if|
|000040d0| 20 28 47 45 54 5f 43 4f | 44 45 20 28 78 25 64 29 | (GET_CO|DE (x%d)|
|000040e0| 20 21 3d 20 22 2c 20 64 | 65 70 74 68 29 3b 0d 09 | != ", d|epth);..|
|000040f0| 20 20 20 20 20 20 70 72 | 69 6e 74 5f 63 6f 64 65 | pr|int_code|
|00004100| 20 28 70 2d 3e 63 6f 64 | 65 29 3b 0d 09 20 20 20 | (p->cod|e);.. |
|00004110| 20 20 20 70 72 69 6e 74 | 66 20 28 22 29 5c 6e 22 | print|f (")\n"|
|00004120| 29 3b 0d 09 20 20 20 20 | 20 20 69 66 20 28 61 66 |);.. | if (af|
|00004130| 74 65 72 77 61 72 64 29 | 0d 09 09 7b 0d 09 09 20 |terward)|...{... |
|00004140| 20 70 72 69 6e 74 66 20 | 28 22 20 20 20 20 7b 22 | printf |(" {"|
|00004150| 29 3b 0d 09 09 20 20 63 | 68 61 6e 67 65 5f 73 74 |);... c|hange_st|
|00004160| 61 74 65 20 28 70 6f 73 | 2c 20 61 66 74 65 72 70 |ate (pos|, afterp|
|00004170| 6f 73 29 3b 0d 09 09 20 | 20 70 72 69 6e 74 66 20 |os);... | printf |
|00004180| 28 22 20 20 20 20 67 6f | 74 6f 20 4c 25 64 3b 20 |(" go|to L%d; |
|00004190| 7d 5c 6e 22 2c 20 61 66 | 74 65 72 77 61 72 64 29 |}\n", af|terward)|
|000041a0| 3b 0d 09 09 7d 0d 09 20 | 20 20 20 20 20 65 6c 73 |;...}.. | els|
|000041b0| 65 0d 09 09 70 72 69 6e | 74 66 20 28 22 20 20 20 |e...prin|tf (" |
|000041c0| 20 67 6f 74 6f 20 72 65 | 74 30 3b 5c 6e 22 29 3b | goto re|t0;\n");|
|000041d0| 0d 09 20 20 20 20 20 20 | 63 6c 65 61 72 5f 63 6f |.. |clear_co|
|000041e0| 64 65 73 20 28 70 29 3b | 0d 09 20 20 20 20 7d 0d |des (p);|.. }.|
|000041f0| 09 7d 0d 0d 20 20 20 20 | 20 20 2f 2a 20 49 66 20 |.}.. | /* If |
|00004200| 70 20 61 6e 64 20 69 74 | 73 20 61 6c 74 65 72 6e |p and it|s altern|
|00004210| 61 74 69 76 65 73 20 61 | 6c 6c 20 68 61 76 65 20 |atives a|ll have |
|00004220| 64 69 66 66 65 72 65 6e | 74 20 6d 6f 64 65 73 0d |differen|t modes.|
|00004230| 09 20 61 6e 64 20 74 68 | 65 72 65 20 61 72 65 20 |. and th|ere are |
|00004240| 61 74 20 6c 65 61 73 74 | 20 34 20 6f 66 20 74 68 |at least| 4 of th|
|00004250| 65 6d 2c 20 6d 61 6b 65 | 20 61 20 73 77 69 74 63 |em, make| a switc|
|00004260| 68 2e 20 20 2a 2f 0d 20 | 20 20 20 20 20 69 66 20 |h. */. | if |
|00004270| 28 69 6e 5f 73 77 69 74 | 63 68 20 3d 3d 20 4e 4f |(in_swit|ch == NO|
|00004280| 5f 53 57 49 54 43 48 20 | 26 26 20 70 6f 73 5b 64 |_SWITCH |&& pos[d|
|00004290| 65 70 74 68 2d 31 5d 20 | 21 3d 20 27 2a 27 29 0d |epth-1] |!= '*').|
|000042a0| 09 7b 0d 09 20 20 72 65 | 67 69 73 74 65 72 20 69 |.{.. re|gister i|
|000042b0| 6e 74 20 69 3b 0d 09 20 | 20 69 6e 74 20 6c 6f 73 |nt i;.. | int los|
|000042c0| 65 20 3d 20 30 3b 0d 0d | 09 20 20 6d 79 62 7a 65 |e = 0;..|. mybze|
|000042d0| 72 6f 20 28 6d 6f 64 65 | 6d 61 70 2c 20 73 69 7a |ro (mode|map, siz|
|000042e0| 65 6f 66 20 6d 6f 64 65 | 6d 61 70 29 3b 0d 09 20 |eof mode|map);.. |
|000042f0| 20 66 6f 72 20 28 70 31 | 20 3d 20 70 2c 20 69 20 | for (p1| = p, i |
|00004300| 3d 20 30 3b 0d 09 20 20 | 20 20 20 20 20 28 70 31 |= 0;.. | (p1|
|00004310| 20 26 26 20 70 31 2d 3e | 6d 6f 64 65 20 21 3d 20 | && p1->|mode != |
|00004320| 56 4f 49 44 6d 6f 64 65 | 0d 09 09 26 26 20 28 70 |VOIDmode|...&& (p|
|00004330| 31 2d 3e 74 65 73 74 73 | 20 3d 3d 20 30 20 7c 7c |1->tests| == 0 |||
|00004340| 20 70 31 2d 3e 65 6e 66 | 6f 72 63 65 5f 6d 6f 64 | p1->enf|orce_mod|
|00004350| 65 29 29 3b 0d 09 20 20 | 20 20 20 20 20 70 31 20 |e));.. | p1 |
|00004360| 3d 20 70 31 2d 3e 6e 65 | 78 74 2c 20 69 2b 2b 29 |= p1->ne|xt, i++)|
|00004370| 0d 09 20 20 20 20 7b 0d | 09 20 20 20 20 20 20 69 |.. {.|. i|
|00004380| 66 20 28 21 20 70 2d 3e | 65 6e 66 6f 72 63 65 5f |f (! p->|enforce_|
|00004390| 6d 6f 64 65 20 26 26 20 | 6d 6f 64 65 6d 61 70 5b |mode && |modemap[|
|000043a0| 28 69 6e 74 29 20 70 31 | 2d 3e 6d 6f 64 65 5d 29 |(int) p1|->mode])|
|000043b0| 0d 09 09 7b 0d 09 09 20 | 20 6c 6f 73 65 20 3d 20 |...{... | lose = |
|000043c0| 31 3b 0d 09 09 20 20 62 | 72 65 61 6b 3b 0d 09 09 |1;... b|reak;...|
|000043d0| 7d 0d 09 20 20 20 20 20 | 20 6d 6f 64 65 6d 61 70 |}.. | modemap|
|000043e0| 5b 28 69 6e 74 29 20 70 | 31 2d 3e 6d 6f 64 65 5d |[(int) p|1->mode]|
|000043f0| 20 3d 20 31 3b 0d 09 20 | 20 20 20 7d 0d 09 20 20 | = 1;.. | }.. |
|00004400| 69 66 20 28 21 6c 6f 73 | 65 20 26 26 20 69 20 3e |if (!los|e && i >|
|00004410| 3d 20 34 29 0d 09 20 20 | 20 20 7b 0d 09 20 20 20 |= 4).. | {.. |
|00004420| 20 20 20 69 6e 5f 73 77 | 69 74 63 68 20 3d 20 4d | in_sw|itch = M|
|00004430| 4f 44 45 5f 53 57 49 54 | 43 48 3b 0d 09 20 20 20 |ODE_SWIT|CH;.. |
|00004440| 20 20 20 70 72 69 6e 74 | 66 20 28 22 20 73 77 69 | print|f (" swi|
|00004450| 74 63 68 20 28 47 45 54 | 5f 4d 4f 44 45 20 28 78 |tch (GET|_MODE (x|
|00004460| 25 64 29 29 5c 6e 20 20 | 7b 5c 6e 22 2c 20 64 65 |%d))\n |{\n", de|
|00004470| 70 74 68 29 3b 0d 09 20 | 20 20 20 7d 0d 09 7d 0d |pth);.. | }..}.|
|00004480| 0d 20 20 20 20 20 20 69 | 66 20 28 69 6e 5f 73 77 |. i|f (in_sw|
|00004490| 69 74 63 68 20 3d 3d 20 | 4e 4f 5f 53 57 49 54 43 |itch == |NO_SWITC|
|000044a0| 48 29 0d 09 7b 0d 09 20 | 20 72 65 67 69 73 74 65 |H)..{.. | registe|
|000044b0| 72 20 69 6e 74 20 69 3b | 0d 09 20 20 6d 79 62 7a |r int i;|.. mybz|
|000044c0| 65 72 6f 20 28 63 6f 64 | 65 6d 61 70 2c 20 73 69 |ero (cod|emap, si|
|000044d0| 7a 65 6f 66 20 63 6f 64 | 65 6d 61 70 29 3b 0d 09 |zeof cod|emap);..|
|000044e0| 20 20 66 6f 72 20 28 70 | 31 20 3d 20 70 2c 20 69 | for (p|1 = p, i|
|000044f0| 20 3d 20 30 3b 20 70 31 | 20 26 26 20 70 31 2d 3e | = 0; p1| && p1->|
|00004500| 63 6f 64 65 20 21 3d 20 | 55 4e 4b 4e 4f 57 4e 3b |code != |UNKNOWN;|
|00004510| 20 70 31 20 3d 20 70 31 | 2d 3e 6e 65 78 74 2c 20 | p1 = p1|->next, |
|00004520| 69 2b 2b 29 0d 09 20 20 | 20 20 7b 0d 09 20 20 20 |i++).. | {.. |
|00004530| 20 20 20 69 66 20 28 63 | 6f 64 65 6d 61 70 5b 28 | if (c|odemap[(|
|00004540| 69 6e 74 29 20 70 31 2d | 3e 63 6f 64 65 5d 29 0d |int) p1-|>code]).|
|00004550| 09 09 62 72 65 61 6b 3b | 0d 09 20 20 20 20 20 20 |..break;|.. |
|00004560| 63 6f 64 65 6d 61 70 5b | 28 69 6e 74 29 20 70 31 |codemap[|(int) p1|
|00004570| 2d 3e 63 6f 64 65 5d 20 | 3d 20 31 3b 0d 09 20 20 |->code] |= 1;.. |
|00004580| 20 20 7d 0d 09 20 20 69 | 66 20 28 28 70 31 20 3d | }.. i|f ((p1 =|
|00004590| 3d 20 30 20 7c 7c 20 70 | 31 2d 3e 63 6f 64 65 20 |= 0 || p|1->code |
|000045a0| 3d 3d 20 55 4e 4b 4e 4f | 57 4e 29 20 26 26 20 69 |== UNKNO|WN) && i|
|000045b0| 20 3e 3d 20 34 29 0d 09 | 20 20 20 20 7b 0d 09 20 | >= 4)..| {.. |
|000045c0| 20 20 20 20 20 69 6e 5f | 73 77 69 74 63 68 20 3d | in_|switch =|
|000045d0| 20 43 4f 44 45 5f 53 57 | 49 54 43 48 3b 0d 09 20 | CODE_SW|ITCH;.. |
|000045e0| 20 20 20 20 20 70 72 69 | 6e 74 66 20 28 22 20 73 | pri|ntf (" s|
|000045f0| 77 69 74 63 68 20 28 47 | 45 54 5f 43 4f 44 45 20 |witch (G|ET_CODE |
|00004600| 28 78 25 64 29 29 5c 6e | 20 20 7b 5c 6e 22 2c 20 |(x%d))\n| {\n", |
|00004610| 64 65 70 74 68 29 3b 0d | 09 20 20 20 20 7d 0d 09 |depth);.|. }..|
|00004620| 7d 0d 0d 20 20 20 20 20 | 20 69 66 20 28 69 6e 5f |}.. | if (in_|
|00004630| 73 77 69 74 63 68 20 3d | 3d 20 4d 4f 44 45 5f 53 |switch =|= MODE_S|
|00004640| 57 49 54 43 48 29 0d 09 | 7b 0d 09 20 20 69 66 20 |WITCH)..|{.. if |
|00004650| 28 6d 6f 64 65 6d 61 70 | 5b 28 69 6e 74 29 20 70 |(modemap|[(int) p|
|00004660| 2d 3e 6d 6f 64 65 5d 29 | 0d 09 20 20 20 20 7b 0d |->mode])|.. {.|
|00004670| 09 20 20 20 20 20 20 70 | 72 69 6e 74 66 20 28 22 |. p|rintf ("|
|00004680| 20 20 63 61 73 65 20 25 | 73 6d 6f 64 65 3a 5c 6e | case %|smode:\n|
|00004690| 22 2c 20 47 45 54 5f 4d | 4f 44 45 5f 4e 41 4d 45 |", GET_M|ODE_NAME|
|000046a0| 20 28 70 2d 3e 6d 6f 64 | 65 29 29 3b 0d 09 20 20 | (p->mod|e));.. |
|000046b0| 20 20 20 20 6d 6f 64 65 | 6d 61 70 5b 28 69 6e 74 | mode|map[(int|
|000046c0| 29 20 70 2d 3e 6d 6f 64 | 65 5d 20 3d 20 30 3b 0d |) p->mod|e] = 0;.|
|000046d0| 09 20 20 20 20 7d 0d 09 | 7d 0d 20 20 20 20 20 20 |. }..|}. |
|000046e0| 69 66 20 28 69 6e 5f 73 | 77 69 74 63 68 20 3d 3d |if (in_s|witch ==|
|000046f0| 20 43 4f 44 45 5f 53 57 | 49 54 43 48 29 0d 09 7b | CODE_SW|ITCH)..{|
|00004700| 0d 09 20 20 69 66 20 28 | 63 6f 64 65 6d 61 70 5b |.. if (|codemap[|
|00004710| 28 69 6e 74 29 20 70 2d | 3e 63 6f 64 65 5d 29 0d |(int) p-|>code]).|
|00004720| 09 20 20 20 20 7b 0d 09 | 20 20 20 20 20 20 70 72 |. {..| pr|
|00004730| 69 6e 74 66 20 28 22 20 | 20 63 61 73 65 20 22 29 |intf (" | case ")|
|00004740| 3b 0d 09 20 20 20 20 20 | 20 70 72 69 6e 74 5f 63 |;.. | print_c|
|00004750| 6f 64 65 20 28 70 2d 3e | 63 6f 64 65 29 3b 0d 09 |ode (p->|code);..|
|00004760| 20 20 20 20 20 20 70 72 | 69 6e 74 66 20 28 22 3a | pr|intf (":|
|00004770| 5c 6e 22 29 3b 0d 09 20 | 20 20 20 20 20 63 6f 64 |\n");.. | cod|
|00004780| 65 6d 61 70 5b 28 69 6e | 74 29 20 70 2d 3e 63 6f |emap[(in|t) p->co|
|00004790| 64 65 5d 20 3d 20 30 3b | 0d 09 20 20 20 20 7d 0d |de] = 0;|.. }.|
|000047a0| 09 7d 0d 0d 20 20 20 20 | 20 20 70 72 69 6e 74 66 |.}.. | printf|
|000047b0| 20 28 22 20 20 69 66 20 | 28 22 29 3b 0d 20 20 20 | (" if |(");. |
|000047c0| 20 20 20 69 66 20 28 70 | 2d 3e 65 78 61 63 74 20 | if (p|->exact |
|000047d0| 7c 7c 20 28 70 2d 3e 63 | 6f 64 65 20 21 3d 20 55 ||| (p->c|ode != U|
|000047e0| 4e 4b 4e 4f 57 4e 20 26 | 26 20 69 6e 5f 73 77 69 |NKNOWN &|& in_swi|
|000047f0| 74 63 68 20 21 3d 20 43 | 4f 44 45 5f 53 57 49 54 |tch != C|ODE_SWIT|
|00004800| 43 48 29 29 0d 09 7b 0d | 09 20 20 69 66 20 28 70 |CH))..{.|. if (p|
|00004810| 2d 3e 65 78 61 63 74 29 | 0d 09 20 20 20 20 70 72 |->exact)|.. pr|
|00004820| 69 6e 74 66 20 28 22 78 | 25 64 20 3d 3d 20 25 73 |intf ("x|%d == %s|
|00004830| 22 2c 20 64 65 70 74 68 | 2c 20 70 2d 3e 65 78 61 |", depth|, p->exa|
|00004840| 63 74 29 3b 0d 09 20 20 | 65 6c 73 65 0d 09 20 20 |ct);.. |else.. |
|00004850| 20 20 7b 0d 09 20 20 20 | 20 20 20 70 72 69 6e 74 | {.. | print|
|00004860| 66 20 28 22 47 45 54 5f | 43 4f 44 45 20 28 78 25 |f ("GET_|CODE (x%|
|00004870| 64 29 20 3d 3d 20 22 2c | 20 64 65 70 74 68 29 3b |d) == ",| depth);|
|00004880| 0d 09 20 20 20 20 20 20 | 70 72 69 6e 74 5f 63 6f |.. |print_co|
|00004890| 64 65 20 28 70 2d 3e 63 | 6f 64 65 29 3b 0d 09 20 |de (p->c|ode);.. |
|000048a0| 20 20 20 7d 0d 09 20 20 | 70 72 69 6e 74 66 20 28 | }.. |printf (|
|000048b0| 22 20 26 26 20 22 29 3b | 0d 09 7d 0d 20 20 20 20 |" && ");|..}. |
|000048c0| 20 20 69 66 20 28 70 2d | 3e 6d 6f 64 65 20 21 3d | if (p-|>mode !=|
|000048d0| 20 56 4f 49 44 6d 6f 64 | 65 20 26 26 20 21 69 67 | VOIDmod|e && !ig|
|000048e0| 6e 6d 6f 64 65 20 26 26 | 20 69 6e 5f 73 77 69 74 |nmode &&| in_swit|
|000048f0| 63 68 20 21 3d 20 4d 4f | 44 45 5f 53 57 49 54 43 |ch != MO|DE_SWITC|
|00004900| 48 29 0d 09 70 72 69 6e | 74 66 20 28 22 47 45 54 |H)..prin|tf ("GET|
|00004910| 5f 4d 4f 44 45 20 28 78 | 25 64 29 20 3d 3d 20 25 |_MODE (x|%d) == %|
|00004920| 73 6d 6f 64 65 20 26 26 | 20 22 2c 0d 09 09 64 65 |smode &&| ",...de|
|00004930| 70 74 68 2c 20 47 45 54 | 5f 4d 4f 44 45 5f 4e 41 |pth, GET|_MODE_NA|
|00004940| 4d 45 20 28 70 2d 3e 6d | 6f 64 65 29 29 3b 0d 20 |ME (p->m|ode));. |
|00004950| 20 20 20 20 20 69 66 20 | 28 70 2d 3e 74 65 73 74 | if |(p->test|
|00004960| 5f 65 6c 74 5f 7a 65 72 | 6f 5f 69 6e 74 29 0d 09 |_elt_zer|o_int)..|
|00004970| 70 72 69 6e 74 66 20 28 | 22 58 49 4e 54 20 28 78 |printf (|"XINT (x|
|00004980| 25 64 2c 20 30 29 20 3d | 3d 20 25 64 20 26 26 20 |%d, 0) =|= %d && |
|00004990| 22 2c 20 64 65 70 74 68 | 2c 20 70 2d 3e 65 6c 74 |", depth|, p->elt|
|000049a0| 5f 7a 65 72 6f 5f 69 6e | 74 29 3b 0d 20 20 20 20 |_zero_in|t);. |
|000049b0| 20 20 69 66 20 28 70 2d | 3e 76 65 63 6c 65 6e 29 | if (p-|>veclen)|
|000049c0| 0d 09 70 72 69 6e 74 66 | 20 28 22 58 56 45 43 4c |..printf| ("XVECL|
|000049d0| 45 4e 20 28 78 25 64 2c | 20 30 29 20 3d 3d 20 25 |EN (x%d,| 0) == %|
|000049e0| 64 20 26 26 20 22 2c 20 | 64 65 70 74 68 2c 20 70 |d && ", |depth, p|
|000049f0| 2d 3e 76 65 63 6c 65 6e | 29 3b 0d 20 20 20 20 20 |->veclen|);. |
|00004a00| 20 69 66 20 28 70 2d 3e | 74 65 73 74 5f 65 6c 74 | if (p->|test_elt|
|00004a10| 5f 6f 6e 65 5f 69 6e 74 | 29 0d 09 70 72 69 6e 74 |_one_int|)..print|
|00004a20| 66 20 28 22 58 49 4e 54 | 20 28 78 25 64 2c 20 31 |f ("XINT| (x%d, 1|
|00004a30| 29 20 3d 3d 20 25 64 20 | 26 26 20 22 2c 20 64 65 |) == %d |&& ", de|
|00004a40| 70 74 68 2c 20 70 2d 3e | 65 6c 74 5f 6f 6e 65 5f |pth, p->|elt_one_|
|00004a50| 69 6e 74 29 3b 0d 20 20 | 20 20 20 20 69 66 20 28 |int);. | if (|
|00004a60| 70 2d 3e 64 75 70 6e 6f | 20 3e 3d 20 30 29 0d 09 |p->dupno| >= 0)..|
|00004a70| 70 72 69 6e 74 66 20 28 | 22 72 74 78 5f 65 71 75 |printf (|"rtx_equ|
|00004a80| 61 6c 5f 70 20 28 78 25 | 64 2c 20 72 65 63 6f 67 |al_p (x%|d, recog|
|00004a90| 5f 6f 70 65 72 61 6e 64 | 5b 25 64 5d 29 20 26 26 |_operand|[%d]) &&|
|00004aa0| 20 22 2c 20 64 65 70 74 | 68 2c 20 70 2d 3e 64 75 | ", dept|h, p->du|
|00004ab0| 70 6e 6f 29 3b 0d 20 20 | 20 20 20 20 69 66 20 28 |pno);. | if (|
|00004ac0| 70 2d 3e 74 65 73 74 73 | 29 0d 09 70 72 69 6e 74 |p->tests|)..print|
|00004ad0| 66 20 28 22 25 73 20 28 | 78 25 64 2c 20 25 73 6d |f ("%s (|x%d, %sm|
|00004ae0| 6f 64 65 29 22 2c 20 70 | 2d 3e 74 65 73 74 73 2c |ode)", p|->tests,|
|00004af0| 20 64 65 70 74 68 2c 0d | 09 09 47 45 54 5f 4d 4f | depth,.|..GET_MO|
|00004b00| 44 45 5f 4e 41 4d 45 20 | 28 70 2d 3e 6d 6f 64 65 |DE_NAME |(p->mode|
|00004b10| 29 29 3b 0d 20 20 20 20 | 20 20 65 6c 73 65 0d 09 |));. | else..|
|00004b20| 70 72 69 6e 74 66 20 28 | 22 31 22 29 3b 0d 0d 20 |printf (|"1");.. |
|00004b30| 20 20 20 20 20 69 66 20 | 28 70 2d 3e 6f 70 6e 6f | if |(p->opno|
|00004b40| 20 3e 3d 20 30 29 0d 09 | 70 72 69 6e 74 66 20 28 | >= 0)..|printf (|
|00004b50| 22 29 5c 6e 20 20 20 20 | 7b 20 72 65 63 6f 67 5f |")\n |{ recog_|
|00004b60| 6f 70 65 72 61 6e 64 5b | 25 64 5d 20 3d 20 78 25 |operand[|%d] = x%|
|00004b70| 64 3b 20 22 2c 0d 09 09 | 70 2d 3e 6f 70 6e 6f 2c |d; ",...|p->opno,|
|00004b80| 20 64 65 70 74 68 29 3b | 0d 20 20 20 20 20 20 65 | depth);|. e|
|00004b90| 6c 73 65 0d 09 70 72 69 | 6e 74 66 20 28 22 29 5c |lse..pri|ntf (")\|
|00004ba0| 6e 20 20 20 20 22 29 3b | 0d 0d 20 20 20 20 20 20 |n ");|.. |
|00004bb0| 69 66 20 28 70 2d 3e 63 | 5f 74 65 73 74 29 0d 09 |if (p->c|_test)..|
|00004bc0| 70 72 69 6e 74 66 20 28 | 22 69 66 20 28 25 73 29 |printf (|"if (%s)|
|00004bd0| 20 22 2c 20 70 2d 3e 63 | 5f 74 65 73 74 29 3b 0d | ", p->c|_test);.|
|00004be0| 0d 20 20 20 20 20 20 69 | 66 20 28 70 2d 3e 69 6e |. i|f (p->in|
|00004bf0| 73 6e 5f 63 6f 64 65 5f | 6e 75 6d 62 65 72 20 3e |sn_code_|number >|
|00004c00| 3d 20 30 29 0d 09 70 72 | 69 6e 74 66 20 28 22 72 |= 0)..pr|intf ("r|
|00004c10| 65 74 75 72 6e 20 25 64 | 3b 22 2c 20 70 2d 3e 69 |eturn %d|;", p->i|
|00004c20| 6e 73 6e 5f 63 6f 64 65 | 5f 6e 75 6d 62 65 72 29 |nsn_code|_number)|
|00004c30| 3b 0d 20 20 20 20 20 20 | 65 6c 73 65 0d 09 70 72 |;. |else..pr|
|00004c40| 69 6e 74 66 20 28 22 67 | 6f 74 6f 20 4c 25 64 3b |intf ("g|oto L%d;|
|00004c50| 22 2c 20 70 2d 3e 73 75 | 63 63 65 73 73 2d 3e 6e |", p->su|ccess->n|
|00004c60| 75 6d 62 65 72 29 3b 0d | 0d 20 20 20 20 20 20 69 |umber);.|. i|
|00004c70| 66 20 28 70 2d 3e 6f 70 | 6e 6f 20 3e 3d 20 30 29 |f (p->op|no >= 0)|
|00004c80| 0d 09 70 72 69 6e 74 66 | 20 28 22 20 7d 5c 6e 22 |..printf| (" }\n"|
|00004c90| 29 3b 0d 20 20 20 20 20 | 20 65 6c 73 65 0d 09 70 |);. | else..p|
|00004ca0| 72 69 6e 74 66 20 28 22 | 5c 6e 22 29 3b 0d 0d 20 |rintf ("|\n");.. |
|00004cb0| 20 20 20 20 20 2f 2a 20 | 4e 6f 77 2c 20 69 66 20 | /* |Now, if |
|00004cc0| 69 6e 73 69 64 65 20 61 | 20 73 77 69 74 63 68 2c |inside a| switch,|
|00004cd0| 20 62 72 61 6e 63 68 20 | 74 6f 20 6e 65 78 74 20 | branch |to next |
|00004ce0| 73 77 69 74 63 68 20 6d | 65 6d 62 65 72 0d 09 20 |switch m|ember.. |
|00004cf0| 74 68 61 74 20 6d 69 67 | 68 74 20 61 6c 73 6f 20 |that mig|ht also |
|00004d00| 6e 65 65 64 20 74 6f 20 | 62 65 20 74 65 73 74 65 |need to |be teste|
|00004d10| 64 20 69 66 20 74 68 69 | 73 20 6f 6e 65 20 66 61 |d if thi|s one fa|
|00004d20| 69 6c 73 2e 20 20 2a 2f | 0d 0d 20 20 20 20 20 20 |ils. */|.. |
|00004d30| 69 66 20 28 69 6e 5f 73 | 77 69 74 63 68 20 3d 3d |if (in_s|witch ==|
|00004d40| 20 43 4f 44 45 5f 53 57 | 49 54 43 48 29 0d 09 7b | CODE_SW|ITCH)..{|
|00004d50| 0d 09 20 20 2f 2a 20 46 | 69 6e 64 20 74 68 65 20 |.. /* F|ind the |
|00004d60| 6e 65 78 74 20 61 6c 74 | 65 72 6e 61 74 69 76 65 |next alt|ernative|
|00004d70| 20 74 6f 20 70 0d 09 20 | 20 20 20 20 74 68 61 74 | to p.. | that|
|00004d80| 20 6d 69 67 68 74 20 62 | 65 20 61 70 70 6c 69 63 | might b|e applic|
|00004d90| 61 62 6c 65 20 69 66 20 | 70 20 77 61 73 20 61 70 |able if |p was ap|
|00004da0| 70 6c 69 63 61 62 6c 65 | 2e 20 20 2a 2f 0d 09 20 |plicable|. */.. |
|00004db0| 20 66 6f 72 20 28 70 31 | 20 3d 20 70 2d 3e 6e 65 | for (p1| = p->ne|
|00004dc0| 78 74 3b 20 70 31 3b 20 | 70 31 20 3d 20 70 31 2d |xt; p1; |p1 = p1-|
|00004dd0| 3e 6e 65 78 74 29 0d 09 | 20 20 20 20 69 66 20 28 |>next)..| if (|
|00004de0| 70 31 2d 3e 63 6f 64 65 | 20 3d 3d 20 55 4e 4b 4e |p1->code| == UNKN|
|00004df0| 4f 57 4e 20 7c 7c 20 70 | 2d 3e 63 6f 64 65 20 3d |OWN || p|->code =|
|00004e00| 3d 20 70 31 2d 3e 63 6f | 64 65 29 0d 09 20 20 20 |= p1->co|de).. |
|00004e10| 20 20 20 62 72 65 61 6b | 3b 0d 09 20 20 69 66 20 | break|;.. if |
|00004e20| 28 70 31 20 3d 3d 20 30 | 20 7c 7c 20 70 31 2d 3e |(p1 == 0| || p1->|
|00004e30| 63 6f 64 65 20 3d 3d 20 | 55 4e 4b 4e 4f 57 4e 29 |code == |UNKNOWN)|
|00004e40| 0d 09 20 20 20 20 70 72 | 69 6e 74 66 20 28 22 20 |.. pr|intf (" |
|00004e50| 20 62 72 65 61 6b 3b 5c | 6e 22 29 3b 0d 09 20 20 | break;\|n");.. |
|00004e60| 65 6c 73 65 20 69 66 20 | 28 70 31 20 21 3d 20 70 |else if |(p1 != p|
|00004e70| 2d 3e 6e 65 78 74 29 0d | 09 20 20 20 20 7b 0d 09 |->next).|. {..|
|00004e80| 20 20 20 20 20 20 70 72 | 69 6e 74 66 20 28 22 20 | pr|intf (" |
|00004e90| 67 6f 74 6f 20 4c 25 64 | 3b 5c 6e 22 2c 20 70 31 |goto L%d|;\n", p1|
|00004ea0| 2d 3e 6e 75 6d 62 65 72 | 29 3b 0d 09 20 20 20 20 |->number|);.. |
|00004eb0| 20 20 70 31 2d 3e 6c 61 | 62 65 6c 5f 6e 65 65 64 | p1->la|bel_need|
|00004ec0| 65 64 20 3d 20 31 3b 0d | 09 20 20 20 20 7d 0d 09 |ed = 1;.|. }..|
|00004ed0| 7d 0d 0d 20 20 20 20 20 | 20 69 66 20 28 69 6e 5f |}.. | if (in_|
|00004ee0| 73 77 69 74 63 68 20 3d | 3d 20 4d 4f 44 45 5f 53 |switch =|= MODE_S|
|00004ef0| 57 49 54 43 48 29 0d 09 | 7b 0d 09 20 20 2f 2a 20 |WITCH)..|{.. /* |
|00004f00| 46 69 6e 64 20 74 68 65 | 20 6e 65 78 74 20 61 6c |Find the| next al|
|00004f10| 74 65 72 6e 61 74 69 76 | 65 20 74 6f 20 70 0d 09 |ternativ|e to p..|
|00004f20| 20 20 20 20 20 74 68 61 | 74 20 6d 69 67 68 74 20 | tha|t might |
|00004f30| 62 65 20 61 70 70 6c 69 | 63 61 62 6c 65 20 69 66 |be appli|cable if|
|00004f40| 20 70 20 77 61 73 20 61 | 70 70 6c 69 63 61 62 6c | p was a|pplicabl|
|00004f50| 65 2e 20 20 2a 2f 0d 09 | 20 20 66 6f 72 20 28 70 |e. */..| for (p|
|00004f60| 31 20 3d 20 70 2d 3e 6e | 65 78 74 3b 20 70 31 3b |1 = p->n|ext; p1;|
|00004f70| 20 70 31 20 3d 20 70 31 | 2d 3e 6e 65 78 74 29 0d | p1 = p1|->next).|
|00004f80| 09 20 20 20 20 69 66 20 | 28 70 31 2d 3e 6d 6f 64 |. if |(p1->mod|
|00004f90| 65 20 3d 3d 20 56 4f 49 | 44 6d 6f 64 65 20 7c 7c |e == VOI|Dmode |||
|00004fa0| 20 70 2d 3e 6d 6f 64 65 | 20 3d 3d 20 70 31 2d 3e | p->mode| == p1->|
|00004fb0| 6d 6f 64 65 29 0d 09 20 | 20 20 20 20 20 62 72 65 |mode).. | bre|
|00004fc0| 61 6b 3b 0d 09 20 20 69 | 66 20 28 70 31 20 3d 3d |ak;.. i|f (p1 ==|
|00004fd0| 20 30 20 7c 7c 20 70 31 | 2d 3e 6d 6f 64 65 20 3d | 0 || p1|->mode =|
|00004fe0| 3d 20 56 4f 49 44 6d 6f | 64 65 29 0d 09 20 20 20 |= VOIDmo|de).. |
|00004ff0| 20 70 72 69 6e 74 66 20 | 28 22 20 20 62 72 65 61 | printf |(" brea|
|00005000| 6b 3b 5c 6e 22 29 3b 0d | 09 20 20 65 6c 73 65 20 |k;\n");.|. else |
|00005010| 69 66 20 28 70 31 20 21 | 3d 20 70 2d 3e 6e 65 78 |if (p1 !|= p->nex|
|00005020| 74 29 0d 09 20 20 20 20 | 7b 0d 09 20 20 20 20 20 |t).. |{.. |
|00005030| 20 70 72 69 6e 74 66 20 | 28 22 20 67 6f 74 6f 20 | printf |(" goto |
|00005040| 4c 25 64 3b 5c 6e 22 2c | 20 70 31 2d 3e 6e 75 6d |L%d;\n",| p1->num|
|00005050| 62 65 72 29 3b 0d 09 20 | 20 20 20 20 20 70 31 2d |ber);.. | p1-|
|00005060| 3e 6c 61 62 65 6c 5f 6e | 65 65 64 65 64 20 3d 20 |>label_n|eeded = |
|00005070| 31 3b 0d 09 20 20 20 20 | 7d 0d 09 7d 0d 20 20 20 |1;.. |}..}. |
|00005080| 20 7d 0d 0d 20 20 69 66 | 20 28 69 6e 5f 73 77 69 | }.. if| (in_swi|
|00005090| 74 63 68 20 21 3d 20 4e | 4f 5f 53 57 49 54 43 48 |tch != N|O_SWITCH|
|000050a0| 29 0d 20 20 20 20 70 72 | 69 6e 74 66 20 28 22 20 |). pr|intf (" |
|000050b0| 20 7d 5c 6e 22 29 3b 0d | 0d 20 20 69 66 20 28 61 | }\n");.|. if (a|
|000050c0| 66 74 65 72 77 61 72 64 | 29 0d 20 20 20 20 7b 0d |fterward|). {.|
|000050d0| 20 20 20 20 20 20 63 68 | 61 6e 67 65 5f 73 74 61 | ch|ange_sta|
|000050e0| 74 65 20 28 70 6f 73 2c | 20 61 66 74 65 72 70 6f |te (pos,| afterpo|
|000050f0| 73 29 3b 0d 20 20 20 20 | 20 20 70 72 69 6e 74 66 |s);. | printf|
|00005100| 20 28 22 20 20 67 6f 74 | 6f 20 4c 25 64 3b 5c 6e | (" got|o L%d;\n|
|00005110| 22 2c 20 61 66 74 65 72 | 77 61 72 64 29 3b 0d 20 |", after|ward);. |
|00005120| 20 20 20 7d 0d 20 20 65 | 6c 73 65 0d 20 20 20 20 | }. e|lse. |
|00005130| 70 72 69 6e 74 66 20 28 | 22 20 20 67 6f 74 6f 20 |printf (|" goto |
|00005140| 72 65 74 30 3b 5c 6e 22 | 29 3b 0d 0d 20 20 66 6f |ret0;\n"|);.. fo|
|00005150| 72 20 28 70 20 3d 20 74 | 72 65 65 3b 20 70 3b 20 |r (p = t|ree; p; |
|00005160| 70 20 3d 20 70 2d 3e 6e | 65 78 74 29 0d 20 20 20 |p = p->n|ext). |
|00005170| 20 69 66 20 28 70 2d 3e | 73 75 63 63 65 73 73 29 | if (p->|success)|
|00005180| 0d 20 20 20 20 20 20 7b | 0d 09 20 20 7b 0d 09 20 |. {|.. {.. |
|00005190| 20 20 20 70 6f 73 20 3d | 20 70 2d 3e 70 6f 73 69 | pos =| p->posi|
|000051a0| 74 69 6f 6e 3b 0d 09 20 | 20 20 20 77 72 69 74 65 |tion;.. | write|
|000051b0| 5f 74 72 65 65 20 28 70 | 2d 3e 73 75 63 63 65 73 |_tree (p|->succes|
|000051c0| 73 2c 20 70 6f 73 2c 0d | 09 09 09 70 2d 3e 61 66 |s, pos,.|...p->af|
|000051d0| 74 65 72 77 61 72 64 20 | 3f 20 70 2d 3e 61 66 74 |terward |? p->aft|
|000051e0| 65 72 77 61 72 64 2d 3e | 6e 75 6d 62 65 72 20 3a |erward->|number :|
|000051f0| 20 61 66 74 65 72 77 61 | 72 64 2c 0d 09 09 09 70 | afterwa|rd,....p|
|00005200| 2d 3e 61 66 74 65 72 77 | 61 72 64 20 3f 20 70 6f |->afterw|ard ? po|
|00005210| 73 20 3a 20 61 66 74 65 | 72 70 6f 73 2c 0d 09 09 |s : afte|rpos,...|
|00005220| 09 30 29 3b 0d 09 20 20 | 7d 0d 20 20 20 20 20 20 |.0);.. |}. |
|00005230| 7d 0d 7d 0d 0d 76 6f 69 | 64 0d 70 72 69 6e 74 5f |}.}..voi|d.print_|
|00005240| 63 6f 64 65 20 28 63 6f | 64 65 29 0d 20 20 20 20 |code (co|de). |
|00005250| 20 52 54 58 5f 43 4f 44 | 45 20 63 6f 64 65 3b 0d | RTX_COD|E code;.|
|00005260| 7b 0d 20 20 72 65 67 69 | 73 74 65 72 20 63 68 61 |{. regi|ster cha|
|00005270| 72 20 2a 70 31 3b 0d 20 | 20 66 6f 72 20 28 70 31 |r *p1;. | for (p1|
|00005280| 20 3d 20 47 45 54 5f 52 | 54 58 5f 4e 41 4d 45 20 | = GET_R|TX_NAME |
|00005290| 28 63 6f 64 65 29 3b 20 | 2a 70 31 3b 20 70 31 2b |(code); |*p1; p1+|
|000052a0| 2b 29 0d 20 20 20 20 7b | 0d 20 20 20 20 20 20 69 |+). {|. i|
|000052b0| 66 20 28 2a 70 31 20 3e | 3d 20 27 61 27 20 26 26 |f (*p1 >|= 'a' &&|
|000052c0| 20 2a 70 31 20 3c 3d 20 | 27 7a 27 29 0d 09 70 75 | *p1 <= |'z')..pu|
|000052d0| 74 63 68 61 72 20 28 2a | 70 31 20 2b 20 27 41 27 |tchar (*|p1 + 'A'|
|000052e0| 20 2d 20 27 61 27 29 3b | 0d 20 20 20 20 20 20 65 | - 'a');|. e|
|000052f0| 6c 73 65 0d 09 70 75 74 | 63 68 61 72 20 28 2a 70 |lse..put|char (*p|
|00005300| 31 29 3b 0d 20 20 20 20 | 7d 0d 7d 0d 0d 69 6e 74 |1);. |}.}..int|
|00005310| 0d 73 61 6d 65 5f 63 6f | 64 65 73 20 28 70 2c 20 |.same_co|des (p, |
|00005320| 63 6f 64 65 29 0d 20 20 | 20 20 20 72 65 67 69 73 |code). | regis|
|00005330| 74 65 72 20 73 74 72 75 | 63 74 20 64 65 63 69 73 |ter stru|ct decis|
|00005340| 69 6f 6e 20 2a 70 3b 0d | 20 20 20 20 20 72 65 67 |ion *p;.| reg|
|00005350| 69 73 74 65 72 20 52 54 | 58 5f 43 4f 44 45 20 63 |ister RT|X_CODE c|
|00005360| 6f 64 65 3b 0d 7b 0d 20 | 20 66 6f 72 20 28 3b 20 |ode;.{. | for (; |
|00005370| 70 3b 20 70 20 3d 20 70 | 2d 3e 6e 65 78 74 29 0d |p; p = p|->next).|
|00005380| 20 20 20 20 69 66 20 28 | 70 2d 3e 63 6f 64 65 20 | if (|p->code |
|00005390| 21 3d 20 63 6f 64 65 29 | 0d 20 20 20 20 20 20 72 |!= code)|. r|
|000053a0| 65 74 75 72 6e 20 30 3b | 0d 0d 20 20 72 65 74 75 |eturn 0;|.. retu|
|000053b0| 72 6e 20 31 3b 0d 7d 0d | 0d 76 6f 69 64 0d 63 6c |rn 1;.}.|.void.cl|
|000053c0| 65 61 72 5f 63 6f 64 65 | 73 20 28 70 29 0d 20 20 |ear_code|s (p). |
|000053d0| 20 20 20 72 65 67 69 73 | 74 65 72 20 73 74 72 75 | regis|ter stru|
|000053e0| 63 74 20 64 65 63 69 73 | 69 6f 6e 20 2a 70 3b 0d |ct decis|ion *p;.|
|000053f0| 7b 0d 20 20 66 6f 72 20 | 28 3b 20 70 3b 20 70 20 |{. for |(; p; p |
|00005400| 3d 20 70 2d 3e 6e 65 78 | 74 29 0d 20 20 20 20 70 |= p->nex|t). p|
|00005410| 2d 3e 63 6f 64 65 20 3d | 20 55 4e 4b 4e 4f 57 4e |->code =| UNKNOWN|
|00005420| 3b 0d 7d 0d 0d 69 6e 74 | 0d 73 61 6d 65 5f 6d 6f |;.}..int|.same_mo|
|00005430| 64 65 73 20 28 70 2c 20 | 6d 6f 64 65 29 0d 20 20 |des (p, |mode). |
|00005440| 20 20 20 72 65 67 69 73 | 74 65 72 20 73 74 72 75 | regis|ter stru|
|00005450| 63 74 20 64 65 63 69 73 | 69 6f 6e 20 2a 70 3b 0d |ct decis|ion *p;.|
|00005460| 20 20 20 20 20 72 65 67 | 69 73 74 65 72 20 65 6e | reg|ister en|
|00005470| 75 6d 20 6d 61 63 68 69 | 6e 65 5f 6d 6f 64 65 20 |um machi|ne_mode |
|00005480| 6d 6f 64 65 3b 0d 7b 0d | 20 20 66 6f 72 20 28 3b |mode;.{.| for (;|
|00005490| 20 70 3b 20 70 20 3d 20 | 70 2d 3e 6e 65 78 74 29 | p; p = |p->next)|
|000054a0| 0d 20 20 20 20 69 66 20 | 28 70 2d 3e 6d 6f 64 65 |. if |(p->mode|
|000054b0| 20 21 3d 20 6d 6f 64 65 | 20 7c 7c 20 70 2d 3e 74 | != mode| || p->t|
|000054c0| 65 73 74 73 29 0d 20 20 | 20 20 20 20 72 65 74 75 |ests). | retu|
|000054d0| 72 6e 20 30 3b 0d 0d 20 | 20 72 65 74 75 72 6e 20 |rn 0;.. | return |
|000054e0| 31 3b 0d 7d 0d 0d 76 6f | 69 64 0d 63 6c 65 61 72 |1;.}..vo|id.clear|
|000054f0| 5f 6d 6f 64 65 73 20 28 | 70 29 0d 20 20 20 20 20 |_modes (|p). |
|00005500| 72 65 67 69 73 74 65 72 | 20 73 74 72 75 63 74 20 |register| struct |
|00005510| 64 65 63 69 73 69 6f 6e | 20 2a 70 3b 0d 7b 0d 20 |decision| *p;.{. |
|00005520| 20 66 6f 72 20 28 3b 20 | 70 3b 20 70 20 3d 20 70 | for (; |p; p = p|
|00005530| 2d 3e 6e 65 78 74 29 0d | 20 20 20 20 70 2d 3e 69 |->next).| p->i|
|00005540| 67 6e 6d 6f 64 65 20 3d | 20 31 3b 0d 7d 0d 0c 0d |gnmode =| 1;.}...|
|00005550| 76 6f 69 64 0d 63 68 61 | 6e 67 65 5f 73 74 61 74 |void.cha|nge_stat|
|00005560| 65 20 28 6f 6c 64 70 6f | 73 2c 20 6e 65 77 70 6f |e (oldpo|s, newpo|
|00005570| 73 29 0d 20 20 20 20 20 | 63 68 61 72 20 2a 6f 6c |s). |char *ol|
|00005580| 64 70 6f 73 3b 0d 20 20 | 20 20 20 63 68 61 72 20 |dpos;. | char |
|00005590| 2a 6e 65 77 70 6f 73 3b | 0d 7b 0d 20 20 69 6e 74 |*newpos;|.{. int|
|000055a0| 20 6f 64 65 70 74 68 20 | 3d 20 73 74 72 6c 65 6e | odepth |= strlen|
|000055b0| 20 28 6f 6c 64 70 6f 73 | 29 3b 0d 20 20 69 6e 74 | (oldpos|);. int|
|000055c0| 20 64 65 70 74 68 20 3d | 20 6f 64 65 70 74 68 3b | depth =| odepth;|
|000055d0| 0d 20 20 69 6e 74 20 6e | 64 65 70 74 68 20 3d 20 |. int n|depth = |
|000055e0| 73 74 72 6c 65 6e 20 28 | 6e 65 77 70 6f 73 29 3b |strlen (|newpos);|
|000055f0| 0d 0d 20 20 2f 2a 20 50 | 6f 70 20 75 70 20 61 73 |.. /* P|op up as|
|00005600| 20 6d 61 6e 79 20 6c 65 | 76 65 6c 73 20 61 73 20 | many le|vels as |
|00005610| 6e 65 63 65 73 73 61 72 | 79 2e 20 20 2a 2f 0d 0d |necessar|y. */..|
|00005620| 20 20 77 68 69 6c 65 20 | 28 73 74 72 6e 63 6d 70 | while |(strncmp|
|00005630| 20 28 6f 6c 64 70 6f 73 | 2c 20 6e 65 77 70 6f 73 | (oldpos|, newpos|
|00005640| 2c 20 64 65 70 74 68 29 | 29 0d 20 20 20 20 2d 2d |, depth)|). --|
|00005650| 64 65 70 74 68 3b 0d 0d | 20 20 2f 2a 20 47 6f 20 |depth;..| /* Go |
|00005660| 64 6f 77 6e 20 74 6f 20 | 64 65 73 69 72 65 64 20 |down to |desired |
|00005670| 6c 65 76 65 6c 2e 20 20 | 2a 2f 0d 0d 20 20 77 68 |level. |*/.. wh|
|00005680| 69 6c 65 20 28 64 65 70 | 74 68 20 3c 20 6e 64 65 |ile (dep|th < nde|
|00005690| 70 74 68 29 0d 20 20 20 | 20 7b 0d 20 20 20 20 20 |pth). | {. |
|000056a0| 20 69 66 20 28 6e 65 77 | 70 6f 73 5b 64 65 70 74 | if (new|pos[dept|
|000056b0| 68 5d 20 3d 3d 20 27 2a | 27 29 0d 09 70 72 69 6e |h] == '*|')..prin|
|000056c0| 74 66 20 28 22 20 20 78 | 25 64 20 3d 20 72 65 63 |tf (" x|%d = rec|
|000056d0| 6f 67 5f 61 64 64 72 5f | 64 75 6d 6d 79 3b 5c 6e |og_addr_|dummy;\n|
|000056e0| 20 20 58 45 58 50 20 28 | 78 25 64 2c 20 30 29 20 | XEXP (|x%d, 0) |
|000056f0| 3d 20 78 25 64 3b 5c 6e | 22 2c 0d 09 09 64 65 70 |= x%d;\n|",...dep|
|00005700| 74 68 20 2b 20 31 2c 20 | 64 65 70 74 68 20 2b 20 |th + 1, |depth + |
|00005710| 31 2c 20 64 65 70 74 68 | 29 3b 0d 20 20 20 20 20 |1, depth|);. |
|00005720| 20 65 6c 73 65 20 69 66 | 20 28 6e 65 77 70 6f 73 | else if| (newpos|
|00005730| 5b 64 65 70 74 68 5d 20 | 3e 3d 20 27 61 27 20 26 |[depth] |>= 'a' &|
|00005740| 26 20 6e 65 77 70 6f 73 | 5b 64 65 70 74 68 5d 20 |& newpos|[depth] |
|00005750| 3c 3d 20 27 7a 27 29 0d | 09 70 72 69 6e 74 66 20 |<= 'z').|.printf |
|00005760| 28 22 20 20 78 25 64 20 | 3d 20 58 56 45 43 45 58 |(" x%d |= XVECEX|
|00005770| 50 20 28 78 25 64 2c 20 | 30 2c 20 25 64 29 3b 5c |P (x%d, |0, %d);\|
|00005780| 6e 22 2c 0d 09 09 64 65 | 70 74 68 20 2b 20 31 2c |n",...de|pth + 1,|
|00005790| 20 64 65 70 74 68 2c 20 | 6e 65 77 70 6f 73 5b 64 | depth, |newpos[d|
|000057a0| 65 70 74 68 5d 20 2d 20 | 27 61 27 29 3b 0d 20 20 |epth] - |'a');. |
|000057b0| 20 20 20 20 65 6c 73 65 | 0d 09 70 72 69 6e 74 66 | else|..printf|
|000057c0| 20 28 22 20 20 78 25 64 | 20 3d 20 58 45 58 50 20 | (" x%d| = XEXP |
|000057d0| 28 78 25 64 2c 20 25 63 | 29 3b 5c 6e 22 2c 0d 09 |(x%d, %c|);\n",..|
|000057e0| 09 64 65 70 74 68 20 2b | 20 31 2c 20 64 65 70 74 |.depth +| 1, dept|
|000057f0| 68 2c 20 6e 65 77 70 6f | 73 5b 64 65 70 74 68 5d |h, newpo|s[depth]|
|00005800| 29 3b 0d 20 20 20 20 20 | 20 2b 2b 64 65 70 74 68 |);. | ++depth|
|00005810| 3b 0d 20 20 20 20 7d 0d | 7d 0d 0c 0d 63 68 61 72 |;. }.|}...char|
|00005820| 20 2a 0d 63 6f 70 79 73 | 74 72 20 28 73 31 29 0d | *.copys|tr (s1).|
|00005830| 20 20 20 20 20 63 68 61 | 72 20 2a 73 31 3b 0d 7b | cha|r *s1;.{|
|00005840| 0d 20 20 72 65 67 69 73 | 74 65 72 20 63 68 61 72 |. regis|ter char|
|00005850| 20 2a 74 65 6d 3b 0d 0d | 20 20 69 66 20 28 73 31 | *tem;..| if (s1|
|00005860| 20 3d 3d 20 30 29 0d 20 | 20 20 20 72 65 74 75 72 | == 0). | retur|
|00005870| 6e 20 30 3b 0d 0d 20 20 | 74 65 6d 20 3d 20 28 63 |n 0;.. |tem = (c|
|00005880| 68 61 72 20 2a 29 20 78 | 6d 61 6c 6c 6f 63 20 28 |har *) x|malloc (|
|00005890| 73 74 72 6c 65 6e 20 28 | 73 31 29 20 2b 20 31 29 |strlen (|s1) + 1)|
|000058a0| 3b 0d 20 20 73 74 72 63 | 70 79 20 28 74 65 6d 2c |;. strc|py (tem,|
|000058b0| 20 73 31 29 3b 0d 0d 20 | 20 72 65 74 75 72 6e 20 | s1);.. | return |
|000058c0| 74 65 6d 3b 0d 7d 0d 0d | 76 6f 69 64 0d 6d 79 62 |tem;.}..|void.myb|
|000058d0| 7a 65 72 6f 20 28 62 2c | 20 6c 65 6e 67 74 68 29 |zero (b,| length)|
|000058e0| 0d 20 20 20 20 20 72 65 | 67 69 73 74 65 72 20 63 |. re|gister c|
|000058f0| 68 61 72 20 2a 62 3b 0d | 20 20 20 20 20 72 65 67 |har *b;.| reg|
|00005900| 69 73 74 65 72 20 69 6e | 74 20 6c 65 6e 67 74 68 |ister in|t length|
|00005910| 3b 0d 7b 0d 20 20 77 68 | 69 6c 65 20 28 6c 65 6e |;.{. wh|ile (len|
|00005920| 67 74 68 2d 2d 20 3e 20 | 30 29 0d 20 20 20 20 2a |gth-- > |0). *|
|00005930| 62 2b 2b 20 3d 20 30 3b | 0d 7d 0d 0d 63 68 61 72 |b++ = 0;|.}..char|
|00005940| 20 2a 0d 63 6f 6e 63 61 | 74 20 28 73 31 2c 20 73 | *.conca|t (s1, s|
|00005950| 32 29 0d 20 20 20 20 20 | 63 68 61 72 20 2a 73 31 |2). |char *s1|
|00005960| 2c 20 2a 73 32 3b 0d 7b | 0d 20 20 72 65 67 69 73 |, *s2;.{|. regis|
|00005970| 74 65 72 20 63 68 61 72 | 20 2a 74 65 6d 3b 0d 0d |ter char| *tem;..|
|00005980| 20 20 69 66 20 28 73 31 | 20 3d 3d 20 30 29 0d 20 | if (s1| == 0). |
|00005990| 20 20 20 72 65 74 75 72 | 6e 20 73 32 3b 0d 20 20 | retur|n s2;. |
|000059a0| 69 66 20 28 73 32 20 3d | 3d 20 30 29 0d 20 20 20 |if (s2 =|= 0). |
|000059b0| 20 72 65 74 75 72 6e 20 | 73 31 3b 0d 0d 20 20 74 | return |s1;.. t|
|000059c0| 65 6d 20 3d 20 28 63 68 | 61 72 20 2a 29 20 78 6d |em = (ch|ar *) xm|
|000059d0| 61 6c 6c 6f 63 20 28 73 | 74 72 6c 65 6e 20 28 73 |alloc (s|trlen (s|
|000059e0| 31 29 20 2b 20 73 74 72 | 6c 65 6e 20 28 73 32 29 |1) + str|len (s2)|
|000059f0| 20 2b 20 32 29 3b 0d 20 | 20 73 74 72 63 70 79 20 | + 2);. | strcpy |
|00005a00| 28 74 65 6d 2c 20 73 31 | 29 3b 0d 20 20 73 74 72 |(tem, s1|);. str|
|00005a10| 63 61 74 20 28 74 65 6d | 2c 20 22 20 22 29 3b 0d |cat (tem|, " ");.|
|00005a20| 20 20 73 74 72 63 61 74 | 20 28 74 65 6d 2c 20 73 | strcat| (tem, s|
|00005a30| 32 29 3b 0d 0d 20 20 72 | 65 74 75 72 6e 20 74 65 |2);.. r|eturn te|
|00005a40| 6d 3b 0d 7d 0d 0d 69 6e | 74 0d 78 72 65 61 6c 6c |m;.}..in|t.xreall|
|00005a50| 6f 63 20 28 70 74 72 2c | 20 73 69 7a 65 29 0d 20 |oc (ptr,| size). |
|00005a60| 20 20 20 20 63 68 61 72 | 20 2a 70 74 72 3b 0d 20 | char| *ptr;. |
|00005a70| 20 20 20 20 69 6e 74 20 | 73 69 7a 65 3b 0d 7b 0d | int |size;.{.|
|00005a80| 20 20 69 6e 74 20 72 65 | 73 75 6c 74 20 3d 20 72 | int re|sult = r|
|00005a90| 65 61 6c 6c 6f 63 20 28 | 70 74 72 2c 20 73 69 7a |ealloc (|ptr, siz|
|00005aa0| 65 29 3b 0d 20 20 69 66 | 20 28 21 72 65 73 75 6c |e);. if| (!resul|
|00005ab0| 74 29 0d 20 20 20 20 66 | 61 74 61 6c 20 28 22 76 |t). f|atal ("v|
|00005ac0| 69 72 74 75 61 6c 20 6d | 65 6d 6f 72 79 20 65 78 |irtual m|emory ex|
|00005ad0| 68 61 75 73 74 65 64 22 | 29 3b 0d 20 20 72 65 74 |hausted"|);. ret|
|00005ae0| 75 72 6e 20 72 65 73 75 | 6c 74 3b 0d 7d 0d 0d 69 |urn resu|lt;.}..i|
|00005af0| 6e 74 0d 78 6d 61 6c 6c | 6f 63 20 28 73 69 7a 65 |nt.xmall|oc (size|
|00005b00| 29 0d 7b 0d 20 20 72 65 | 67 69 73 74 65 72 20 69 |).{. re|gister i|
|00005b10| 6e 74 20 76 61 6c 20 3d | 20 6d 61 6c 6c 6f 63 20 |nt val =| malloc |
|00005b20| 28 73 69 7a 65 29 3b 0d | 0d 20 20 69 66 20 28 76 |(size);.|. if (v|
|00005b30| 61 6c 20 3d 3d 20 30 29 | 0d 20 20 20 20 66 61 74 |al == 0)|. fat|
|00005b40| 61 6c 20 28 22 76 69 72 | 74 75 61 6c 20 6d 65 6d |al ("vir|tual mem|
|00005b50| 6f 72 79 20 65 78 68 61 | 75 73 74 65 64 22 29 3b |ory exha|usted");|
|00005b60| 0d 20 20 72 65 74 75 72 | 6e 20 76 61 6c 3b 0d 7d |. retur|n val;.}|
|00005b70| 0d 0d 76 6f 69 64 0d 66 | 61 74 61 6c 20 28 73 2c |..void.f|atal (s,|
|00005b80| 20 61 31 2c 20 61 32 29 | 0d 20 20 20 20 20 63 68 | a1, a2)|. ch|
|00005b90| 61 72 20 2a 73 3b 0d 7b | 0d 20 20 66 70 72 69 6e |ar *s;.{|. fprin|
|00005ba0| 74 66 20 28 73 74 64 65 | 72 72 2c 20 22 67 65 6e |tf (stde|rr, "gen|
|00005bb0| 72 65 63 6f 67 3a 20 22 | 29 3b 0d 20 20 66 70 72 |recog: "|);. fpr|
|00005bc0| 69 6e 74 66 20 28 73 74 | 64 65 72 72 2c 20 73 2c |intf (st|derr, s,|
|00005bd0| 20 61 31 2c 20 61 32 29 | 3b 0d 20 20 66 70 72 69 | a1, a2)|;. fpri|
|00005be0| 6e 74 66 20 28 73 74 64 | 65 72 72 2c 20 22 5c 6e |ntf (std|err, "\n|
|00005bf0| 22 29 3b 0d 20 20 66 70 | 72 69 6e 74 66 20 28 73 |");. fp|rintf (s|
|00005c00| 74 64 65 72 72 2c 20 22 | 61 66 74 65 72 20 25 64 |tderr, "|after %d|
|00005c10| 20 69 6e 73 74 72 75 63 | 74 69 6f 6e 20 64 65 66 | instruc|tion def|
|00005c20| 69 6e 69 74 69 6f 6e 73 | 5c 6e 22 2c 0d 09 20 20 |initions|\n",.. |
|00005c30| 20 6e 65 78 74 5f 69 6e | 73 6e 5f 63 6f 64 65 29 | next_in|sn_code)|
|00005c40| 3b 0d 20 20 65 78 69 74 | 20 28 46 41 54 41 4c 5f |;. exit| (FATAL_|
|00005c50| 45 58 49 54 5f 43 4f 44 | 45 29 3b 0d 7d 0d 0d 2f |EXIT_COD|E);.}../|
|00005c60| 2a 20 4d 6f 72 65 20 27 | 66 72 69 65 6e 64 6c 79 |* More '|friendly|
|00005c70| 27 20 61 62 6f 72 74 20 | 74 68 61 74 20 70 72 69 |' abort |that pri|
|00005c80| 6e 74 73 20 74 68 65 20 | 6c 69 6e 65 20 61 6e 64 |nts the |line and|
|00005c90| 20 66 69 6c 65 2e 0d 20 | 20 20 63 6f 6e 66 69 67 | file.. | config|
|00005ca0| 2e 68 20 63 61 6e 20 23 | 64 65 66 69 6e 65 20 61 |.h can #|define a|
|00005cb0| 62 6f 72 74 20 66 61 6e | 63 79 5f 61 62 6f 72 74 |bort fan|cy_abort|
|00005cc0| 20 69 66 20 79 6f 75 20 | 6c 69 6b 65 20 74 68 61 | if you |like tha|
|00005cd0| 74 20 73 6f 72 74 20 6f | 66 20 74 68 69 6e 67 2e |t sort o|f thing.|
|00005ce0| 20 20 2a 2f 0d 0d 76 6f | 69 64 0d 66 61 6e 63 79 | */..vo|id.fancy|
|00005cf0| 5f 61 62 6f 72 74 20 28 | 29 0d 7b 0d 20 20 66 61 |_abort (|).{. fa|
|00005d00| 74 61 6c 20 28 22 49 6e | 74 65 72 6e 61 6c 20 67 |tal ("In|ternal g|
|00005d10| 63 63 20 61 62 6f 72 74 | 2e 22 29 3b 0d 7d 0d 0c |cc abort|.");.}..|
|00005d20| 0d 69 6e 74 0d 6d 61 69 | 6e 20 28 61 72 67 63 2c |.int.mai|n (argc,|
|00005d30| 20 61 72 67 76 29 0d 20 | 20 20 20 20 69 6e 74 20 | argv). | int |
|00005d40| 61 72 67 63 3b 0d 20 20 | 20 20 20 63 68 61 72 20 |argc;. | char |
|00005d50| 2a 2a 61 72 67 76 3b 0d | 7b 0d 20 20 72 74 78 20 |**argv;.|{. rtx |
|00005d60| 64 65 73 63 3b 0d 20 20 | 73 74 72 75 63 74 20 64 |desc;. |struct d|
|00005d70| 65 63 69 73 69 6f 6e 20 | 2a 74 72 65 65 20 3d 20 |ecision |*tree = |
|00005d80| 30 3b 0d 20 20 46 49 4c | 45 20 2a 69 6e 66 69 6c |0;. FIL|E *infil|
|00005d90| 65 3b 0d 20 20 65 78 74 | 65 72 6e 20 72 74 78 20 |e;. ext|ern rtx |
|00005da0| 72 65 61 64 5f 72 74 78 | 20 28 29 3b 0d 20 20 72 |read_rtx| ();. r|
|00005db0| 65 67 69 73 74 65 72 20 | 69 6e 74 20 63 3b 0d 0d |egister |int c;..|
|00005dc0| 20 20 6f 62 73 74 61 63 | 6b 5f 69 6e 69 74 20 28 | obstac|k_init (|
|00005dd0| 72 74 6c 5f 6f 62 73 74 | 61 63 6b 29 3b 0d 0d 20 |rtl_obst|ack);.. |
|00005de0| 20 69 66 20 28 61 72 67 | 63 20 3c 3d 20 31 29 0d | if (arg|c <= 1).|
|00005df0| 20 20 20 20 66 61 74 61 | 6c 20 28 22 4e 6f 20 69 | fata|l ("No i|
|00005e00| 6e 70 75 74 20 66 69 6c | 65 20 6e 61 6d 65 2e 22 |nput fil|e name."|
|00005e10| 29 3b 0d 0d 20 20 69 6e | 66 69 6c 65 20 3d 20 66 |);.. in|file = f|
|00005e20| 6f 70 65 6e 20 28 61 72 | 67 76 5b 31 5d 2c 20 22 |open (ar|gv[1], "|
|00005e30| 72 22 29 3b 0d 20 20 69 | 66 20 28 69 6e 66 69 6c |r");. i|f (infil|
|00005e40| 65 20 3d 3d 20 30 29 0d | 20 20 20 20 7b 0d 20 20 |e == 0).| {. |
|00005e50| 20 20 20 20 70 65 72 72 | 6f 72 20 28 61 72 67 76 | perr|or (argv|
|00005e60| 5b 31 5d 29 3b 0d 20 20 | 20 20 20 20 65 78 69 74 |[1]);. | exit|
|00005e70| 20 28 46 41 54 41 4c 5f | 45 58 49 54 5f 43 4f 44 | (FATAL_|EXIT_COD|
|00005e80| 45 29 3b 0d 20 20 20 20 | 7d 0d 0d 20 20 69 6e 69 |E);. |}.. ini|
|00005e90| 74 5f 72 74 6c 20 28 29 | 3b 0d 20 20 6e 65 78 74 |t_rtl ()|;. next|
|00005ea0| 5f 69 6e 73 6e 5f 63 6f | 64 65 20 3d 20 30 3b 0d |_insn_co|de = 0;.|
|00005eb0| 0d 20 20 70 72 69 6e 74 | 66 20 28 22 2f 2a 20 47 |. print|f ("/* G|
|00005ec0| 65 6e 65 72 61 74 65 64 | 20 61 75 74 6f 6d 61 74 |enerated| automat|
|00005ed0| 69 63 61 6c 6c 79 20 62 | 79 20 74 68 65 20 70 72 |ically b|y the pr|
|00005ee0| 6f 67 72 61 6d 20 60 67 | 65 6e 72 65 63 6f 67 27 |ogram `g|enrecog'|
|00005ef0| 5c 6e 5c 0d 66 72 6f 6d | 20 74 68 65 20 6d 61 63 |\n\.from| the mac|
|00005f00| 68 69 6e 65 20 64 65 73 | 63 72 69 70 74 69 6f 6e |hine des|cription|
|00005f10| 20 66 69 6c 65 20 60 6d | 64 27 2e 20 20 2a 2f 5c | file `m|d'. */\|
|00005f20| 6e 5c 6e 22 29 3b 0d 0d | 20 20 2f 2a 20 52 65 61 |n\n");..| /* Rea|
|00005f30| 64 20 74 68 65 20 6d 61 | 63 68 69 6e 65 20 64 65 |d the ma|chine de|
|00005f40| 73 63 72 69 70 74 69 6f | 6e 2e 20 20 2a 2f 0d 0d |scriptio|n. */..|
|00005f50| 20 20 77 68 69 6c 65 20 | 28 31 29 0d 20 20 20 20 | while |(1). |
|00005f60| 7b 0d 20 20 20 20 20 20 | 63 20 3d 20 72 65 61 64 |{. |c = read|
|00005f70| 5f 73 6b 69 70 5f 73 70 | 61 63 65 73 20 28 69 6e |_skip_sp|aces (in|
|00005f80| 66 69 6c 65 29 3b 0d 20 | 20 20 20 20 20 69 66 20 |file);. | if |
|00005f90| 28 63 20 3d 3d 20 45 4f | 46 29 0d 09 62 72 65 61 |(c == EO|F)..brea|
|00005fa0| 6b 3b 0d 20 20 20 20 20 | 20 75 6e 67 65 74 63 20 |k;. | ungetc |
|00005fb0| 28 63 2c 20 69 6e 66 69 | 6c 65 29 3b 0d 0d 20 20 |(c, infi|le);.. |
|00005fc0| 20 20 20 20 64 65 73 63 | 20 3d 20 72 65 61 64 5f | desc| = read_|
|00005fd0| 72 74 78 20 28 69 6e 66 | 69 6c 65 29 3b 0d 20 20 |rtx (inf|ile);. |
|00005fe0| 20 20 20 20 69 66 20 28 | 47 45 54 5f 43 4f 44 45 | if (|GET_CODE|
|00005ff0| 20 28 64 65 73 63 29 20 | 3d 3d 20 44 45 46 49 4e | (desc) |== DEFIN|
|00006000| 45 5f 49 4e 53 4e 29 0d | 09 74 72 65 65 20 3d 20 |E_INSN).|.tree = |
|00006010| 6d 65 72 67 65 5f 74 72 | 65 65 73 20 28 74 72 65 |merge_tr|ees (tre|
|00006020| 65 2c 20 6d 61 6b 65 5f | 69 6e 73 6e 5f 73 65 71 |e, make_|insn_seq|
|00006030| 75 65 6e 63 65 20 28 64 | 65 73 63 29 29 3b 0d 20 |uence (d|esc));. |
|00006040| 20 20 20 20 20 69 66 20 | 28 47 45 54 5f 43 4f 44 | if |(GET_COD|
|00006050| 45 20 28 64 65 73 63 29 | 20 3d 3d 20 44 45 46 49 |E (desc)| == DEFI|
|00006060| 4e 45 5f 50 45 45 50 48 | 4f 4c 45 0d 09 20 20 7c |NE_PEEPH|OLE.. ||
|00006070| 7c 20 47 45 54 5f 43 4f | 44 45 20 28 64 65 73 63 || GET_CO|DE (desc|
|00006080| 29 20 3d 3d 20 44 45 46 | 49 4e 45 5f 45 58 50 41 |) == DEF|INE_EXPA|
|00006090| 4e 44 29 0d 09 6e 65 78 | 74 5f 69 6e 73 6e 5f 63 |ND)..nex|t_insn_c|
|000060a0| 6f 64 65 2b 2b 3b 0d 20 | 20 20 20 7d 0d 0d 20 20 |ode++;. | }.. |
|000060b0| 70 72 69 6e 74 66 20 28 | 22 23 69 6e 63 6c 75 64 |printf (|"#includ|
|000060c0| 65 20 5c 22 63 6f 6e 66 | 69 67 2e 68 5c 22 5c 6e |e \"conf|ig.h\"\n|
|000060d0| 22 29 3b 0d 20 20 70 72 | 69 6e 74 66 20 28 22 23 |");. pr|intf ("#|
|000060e0| 69 6e 63 6c 75 64 65 20 | 5c 22 72 74 6c 2e 68 5c |include |\"rtl.h\|
|000060f0| 22 5c 6e 22 29 3b 0d 20 | 20 70 72 69 6e 74 66 20 |"\n");. | printf |
|00006100| 28 22 23 69 6e 63 6c 75 | 64 65 20 5c 22 69 6e 73 |("#inclu|de \"ins|
|00006110| 6e 2d 63 6f 6e 66 69 67 | 2e 68 5c 22 5c 6e 22 29 |n-config|.h\"\n")|
|00006120| 3b 0d 20 20 70 72 69 6e | 74 66 20 28 22 23 69 6e |;. prin|tf ("#in|
|00006130| 63 6c 75 64 65 20 5c 22 | 72 65 63 6f 67 2e 68 5c |clude \"|recog.h\|
|00006140| 22 5c 6e 22 29 3b 0d 20 | 20 70 72 69 6e 74 66 20 |"\n");. | printf |
|00006150| 28 22 23 69 6e 63 6c 75 | 64 65 20 5c 22 72 65 61 |("#inclu|de \"rea|
|00006160| 6c 2e 68 5c 22 5c 6e 22 | 29 3b 0d 20 20 70 72 69 |l.h\"\n"|);. pri|
|00006170| 6e 74 66 20 28 22 5c 6e | 5c 0d 2f 2a 20 60 72 65 |ntf ("\n|\./* `re|
|00006180| 63 6f 67 27 20 63 6f 6e | 74 61 69 6e 73 20 61 20 |cog' con|tains a |
|00006190| 64 65 63 69 73 69 6f 6e | 20 74 72 65 65 5c 6e 5c |decision| tree\n\|
|000061a0| 0d 20 20 20 74 68 61 74 | 20 72 65 63 6f 67 6e 69 |. that| recogni|
|000061b0| 7a 65 73 20 77 68 65 74 | 68 65 72 20 74 68 65 20 |zes whet|her the |
|000061c0| 72 74 78 20 58 30 20 69 | 73 20 61 20 76 61 6c 69 |rtx X0 i|s a vali|
|000061d0| 64 20 69 6e 73 74 72 75 | 63 74 69 6f 6e 2e 5c 6e |d instru|ction.\n|
|000061e0| 5c 0d 5c 6e 5c 0d 20 20 | 20 72 65 63 6f 67 20 72 |\.\n\. | recog r|
|000061f0| 65 74 75 72 6e 73 20 2d | 31 20 69 66 20 74 68 65 |eturns -|1 if the|
|00006200| 20 72 74 78 20 69 73 20 | 6e 6f 74 20 76 61 6c 69 | rtx is |not vali|
|00006210| 64 2e 5c 6e 5c 0d 20 20 | 20 49 66 20 74 68 65 20 |d.\n\. | If the |
|00006220| 72 74 78 20 69 73 20 76 | 61 6c 69 64 2c 20 72 65 |rtx is v|alid, re|
|00006230| 63 6f 67 20 72 65 74 75 | 72 6e 73 20 61 20 6e 6f |cog retu|rns a no|
|00006240| 6e 6e 65 67 61 74 69 76 | 65 20 6e 75 6d 62 65 72 |nnegativ|e number|
|00006250| 5c 6e 5c 0d 20 20 20 77 | 68 69 63 68 20 69 73 20 |\n\. w|hich is |
|00006260| 74 68 65 20 69 6e 73 6e | 20 63 6f 64 65 20 6e 75 |the insn| code nu|
|00006270| 6d 62 65 72 20 66 6f 72 | 20 74 68 65 20 70 61 74 |mber for| the pat|
|00006280| 74 65 72 6e 20 74 68 61 | 74 20 6d 61 74 63 68 65 |tern tha|t matche|
|00006290| 64 2e 5c 6e 22 29 3b 0d | 20 20 70 72 69 6e 74 66 |d.\n");.| printf|
|000062a0| 20 28 22 20 20 20 54 68 | 69 73 20 69 73 20 74 68 | (" Th|is is th|
|000062b0| 65 20 73 61 6d 65 20 61 | 73 20 74 68 65 20 6f 72 |e same a|s the or|
|000062c0| 64 65 72 20 69 6e 20 74 | 68 65 20 6d 61 63 68 69 |der in t|he machi|
|000062d0| 6e 65 20 64 65 73 63 72 | 69 70 74 69 6f 6e 20 6f |ne descr|iption o|
|000062e0| 66 5c 6e 5c 0d 20 20 20 | 74 68 65 20 65 6e 74 72 |f\n\. |the entr|
|000062f0| 79 20 74 68 61 74 20 6d | 61 74 63 68 65 64 2e 20 |y that m|atched. |
|00006300| 20 54 68 69 73 20 6e 75 | 6d 62 65 72 20 63 61 6e | This nu|mber can|
|00006310| 20 62 65 20 75 73 65 64 | 20 61 73 20 61 6e 20 69 | be used| as an i|
|00006320| 6e 64 65 78 20 69 6e 74 | 6f 5c 6e 5c 0d 20 20 20 |ndex int|o\n\. |
|00006330| 69 6e 73 6e 5f 74 65 6d | 70 6c 61 74 65 73 20 61 |insn_tem|plates a|
|00006340| 6e 64 20 69 6e 73 6e 5f | 6e 5f 6f 70 65 72 61 6e |nd insn_|n_operan|
|00006350| 64 73 20 28 66 6f 75 6e | 64 20 69 6e 20 69 6e 73 |ds (foun|d in ins|
|00006360| 6e 2d 6f 75 74 70 75 74 | 2e 63 29 5c 6e 5c 0d 20 |n-output|.c)\n\. |
|00006370| 20 20 6f 72 20 61 73 20 | 61 6e 20 61 72 67 75 6d | or as |an argum|
|00006380| 65 6e 74 20 74 6f 20 6f | 75 74 70 75 74 5f 69 6e |ent to o|utput_in|
|00006390| 73 6e 5f 68 61 69 72 79 | 20 28 61 6c 73 6f 20 69 |sn_hairy| (also i|
|000063a0| 6e 20 69 6e 73 6e 2d 6f | 75 74 70 75 74 2e 63 29 |n insn-o|utput.c)|
|000063b0| 2e 20 20 2a 2f 5c 6e 5c | 6e 22 29 3b 0d 0d 20 20 |. */\n\|n");.. |
|000063c0| 70 72 69 6e 74 66 20 28 | 22 72 74 78 20 72 65 63 |printf (|"rtx rec|
|000063d0| 6f 67 5f 6f 70 65 72 61 | 6e 64 5b 4d 41 58 5f 52 |og_opera|nd[MAX_R|
|000063e0| 45 43 4f 47 5f 4f 50 45 | 52 41 4e 44 53 5d 3b 5c |ECOG_OPE|RANDS];\|
|000063f0| 6e 5c 6e 22 29 3b 0d 20 | 20 70 72 69 6e 74 66 20 |n\n");. | printf |
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.